R中的cbind函数是column-bind的缩写,可以用来将数据帧按列组合在一起。
我们可以使用pandas的concat()函数来执行Python中的同等功能。
df3 = pd.concat([df1, df2], axis=1)
下面的例子展示了如何在实践中使用这个函数。
例1:在Python中使用cbind,索引值相等
假设我们有以下两个pandas DataFrames。
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 A 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)
assists rebounds
0 A 22
1 B 19
2 C 25
3 D 33
4 E 29
我们可以使用**concat()**函数来快速地将这两个DataFrames按列绑定在一起。
#column-bind two DataFrames into new DataFrame
df3 = pd.concat([df1, df2], axis=1)
#view resulting DataFrame
df3
team points assists rebounds
0 A 99 A 22
1 B 91 B 19
2 C 104 C 25
3 D 88 D 33
4 E 108 E 29
例2:在Python中使用cbind处理不相等的索引值
假设我们有以下两个 pandas DataFrames。
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 A 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)
assists rebounds
6 A 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 A 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, inplace=True)
df2.reset_index(drop=True, inplace=True)
#column-bind two DataFrames
df3 = pd.concat([df1, df2], axis=1)
#view resulting DataFrame
df3
team points assists rebounds
0 A 99 A 22
1 B 91 B 19
2 C 104 C 25
3 D 88 D 33
4 E 108 E 29
注意,这个DataFrame与我们在前面的例子中得到的一致。
其他资源
下面的教程解释了如何在Python中执行其他常见的操作。
如何在索引上合并两个Pandas数据框架
如何在多列上合并Pandas数据框架
如何在Pandas中进行VLOOKUP操作
The postHow to Use cbind in Python (Equivalent to R)appeared first onStatology.