Pandas:如何合并两个具有不同列名的数据框架

617 阅读2分钟

你可以使用下面的基本语法来合并两个具有不同列名的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中执行其他常见任务:

如何在Pandas中改变列的顺序
如何在Pandas中重命名列
如何在Pandas中按名称排序列