如何在python中使用cbind(相当于r)


R 中的cbind函数( column-bind的缩写)可用于按列将数据帧组合在一起。

我们可以使用 pandas concat()函数在 Python 中执行等效函数:

 df3 = pd. concat ([df1, df2], axis= 1 )

以下示例展示了如何在实践中使用此功能。

示例 1:在 Python 中使用具有相等索引值的 cbind

假设我们有以下两个 panda DataFrame:

 import pandas as pd

#define DataFrames
df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E'],
                    ' points ': [99, 91, 104, 88, 108]})

print (df1)

  team points
0 to 99
1 B 91
2 C 104
3 D 88
4 E 108

df2 = pd. DataFrame ({' assists ': ['A', 'B', 'C', 'D', 'E'],
                    ' rebounds ': [22, 19, 25, 33, 29]})

print (df2)

  rebound assists
0 to 22
1 B 19
2 C 25
3 D 33
4 E 29

我们可以使用concat()函数通过这两个 DataFrame 的列快速将它们链接在一起:

 #column-bind two DataFrames into new DataFrame
df3 = pd. concat ([df1, df2], axis= 1 )

#view resulting DataFrame
df3

	team points assists rebounds
0 to 99 to 22
1 B 91 B 19
2 C 104 C 25
3 D 88 D 33
4 E 108 E 29

示例 2:在 Python 中使用 cbind 并具有不相等的索引值

假设我们有以下两个 panda DataFrame:

 import pandas as pd

#define DataFrames
df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E'],
                    ' points ': [99, 91, 104, 88, 108]})

print (df1)

  team points
0 to 99
1 B 91
2 C 104
3 D 88
4 E 108

df2 = pd. DataFrame ({' assists ': ['A', 'B', 'C', 'D', 'E'],
                    ' rebounds ': [22, 19, 25, 33, 29]})

df2. index = [6, 7, 8, 9, 10]

print (df2)

   rebound assists
6 to 22
7 B 19
8 C 25
9 D 33
10 E 29

请注意,两个 DataFrame 没有相同的索引值。

如果我们尝试使用concat()函数将它们链接在一起,我们将得到以下结果:

 #attempt to column-bind two DataFrames
df3 = pd. concat ([df1, df2], axis= 1 )

#view resulting DataFrame
df3

	team points assists rebounds
0 to 99.0 NaN NaN
1 B 91.0 NaN NaN
2 C 104.0 NaN NaN
3 D 88.0 NaN NaN
4 E 108.0 NaN NaN
6 NaN NaN A 22.0
7 NaN NaN B 19.0
8 NaN NaN C 25.0
9 NaN NaN D 33.0
10 NaN NaN E 29.0

这不是我们想要的结果。

为了解决这个问题,我们首先需要重置每个 DataFrame 的索引,然后再将它们连接在一起:

 import pandas as pd

#define DataFrames
df1 = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E'],
                    ' points ': [99, 91, 104, 88, 108]})

df2 = pd. DataFrame ({' assists ': ['A', 'B', 'C', 'D', 'E'],
                    ' rebounds ': [22, 19, 25, 33, 29]})

df2. index = [6, 7, 8, 9, 10]

#reset index of each DataFrame
df1. reset_index (drop= True , place= True )
df2. reset_index (drop= True , place= True )

#column-bind two DataFrames
df3 = pd. concat ([df1, df2], axis= 1 )

#view resulting DataFrame
df3

	team points assists rebounds
0 to 99 to 22
1 B 91 B 19
2 C 104 C 25
3 D 88 D 33
4 E 108 E 29

请注意,此 DataFrame 与我们在上一示例中获得的 DataFrame 相匹配。

其他资源

以下教程解释了如何在 Python 中执行其他常见操作:

如何合并索引上的两个 Pandas DataFrame
如何跨多列合并 Pandas DataFrame
如何在 Pandas 中进行 VLOOKUP

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注