你可以使用下面的基本语法来合并两个具有不同列名的pandas DataFrames:
pd.merge(df1, df2, left_on='left_column_name', right_on='right_column_name')
下面的例子展示了如何在实践中使用这种语法。
例子:合并两个具有不同列名的Pandas DataFrames
假设我们有以下两个pandas DataFrames:
import pandas as pd
#create first DataFrame
df1 = pd.DataFrame({'team': ['A', 'B', 'C', 'D', 'E', 'F'],
'points': [4, 4, 6, 8, 9, 5]})
#view DataFrame
print(df1)
team points
0 A 4
1 B 4
2 C 6
3 D 8
4 E 9
5 F 5
#create second DataFrame
df2 = pd.DataFrame({'team_name': ['A', 'B', 'C', 'D', 'E', 'F'],
'rebounds': [12, 7, 8, 8, 5, 11]})
#view DataFrame
print(df2)
team_name rebounds
0 A 12
1 B 7
2 C 8
3 D 8
4 E 5
5 F 11
我们可以使用下面的语法来执行一个内联,使用第一个DataFrame中的team列和第二个DataFrame中的team_name列:
#merge DataFrames
df3 = pd.merge(df1, df2, left_on='team', right_on='team_name')
#view result
print(df3)
team points team_name rebounds
0 A 4 A 12
1 B 4 B 7
2 C 6 C 8
3 D 8 D 8
4 E 9 E 5
5 F 5 F 11
请注意,尽管我们用于连接的两个列名在每个DataFrame中是不同的,但我们还是能够成功地执行一个内部连接。
请注意,我们也可以使用下面的代码从最终合并的DataFrame中删除team_name列,因为这一列中的值与team列中的值一致:
#drop team_name column
df3.drop('team_name', axis=1, inplace=True)
#view updated DataFrame
print(df3)
team points rebounds
0 A 4 12
1 B 4 7
2 C 6 8
3 D 8 8
4 E 9 5
5 F 5 11
注意,team_name 列已经从DataFrame中删除。
相关的: 如何在Pandas中删除列(4个例子)
其他资源
下面的教程解释了如何在pandas中执行其他常见任务: