📌  相关文章
📜  Pandas – 合并两个具有不同列的数据框(1)

📅  最后修改于: 2023-12-03 15:33:23.928000             🧑  作者: Mango

Pandas – 合并两个具有不同列的数据框

在进行数据分析过程中,经常需要将两个不同的数据框合并成一个,但是两个数据框可能具有不同的列数或者列名,并且需要对合并后的数据框进行一些处理。本文将介绍如何使用Pandas库合并不同列的数据框。

使用Pandas合并数据框

Pandas提供了merge()函数来合并数据框,这个函数的用法如下:

 pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
          left_index=False, right_index=False, sort=True,
          suffixes=('_x', '_y'), copy=True, indicator=False,
          validate=None)
  • left: 需要合并的左侧数据框
  • right: 需要合并的右侧数据框
  • how: 合并方式,默认为inner,可以取inner、outer、left、right
  • on: 指定列名进行合并,两个数据框需要有相同的列名
  • left_on: 左侧数据框中需要合并的列名
  • right_on: 右侧数据框中需要合并的列名
  • left_index: 是否使用左侧数据框的索引,默认为False
  • right_index: 是否使用右侧数据框的索引,默认为False
  • sort: 是否根据合并键排序,默认为True
  • suffixes: 如果两个数据框中具有相同的列名,用来区分这些列
  • copy: 是否在合并操作中复制数据,默认为True
  • indicator: 是否在输出的数据框中加入一个列,指示每个行的来源
  • validate: 检查合并操作是否为有效的值,默认为none,可以取one_to_one、one_to_many、many_to_one、many_to_many
示例

我们使用如下两个数据框来进行示例:

import pandas as pd

df1 = pd.DataFrame({'key': ['A', 'B', 'C', 'D'],
                    'value': [1, 2, 3, 4]})
df2 = pd.DataFrame({'key': ['B', 'D', 'E', 'F'],
                    'value': [5, 6, 7, 8],
                    'new_value': [9, 10, 11, 12]})
print(df1)
print(df2)

输出结果如下:

  key  value
0   A      1
1   B      2
2   C      3
3   D      4

  key  value  new_value
0   B      5          9
1   D      6         10
2   E      7         11
3   F      8         12

我们需要将两个数据框合并成一个,同时保留所有的列,可以使用下面的代码:

result = pd.merge(df1, df2, on='key', how='outer')
print(result)

输出结果如下:

  key  value_x  value_y  new_value
0   A      1.0      NaN        NaN
1   B      2.0      5.0        9.0
2   C      3.0      NaN        NaN
3   D      4.0      6.0       10.0
4   E      NaN      7.0       11.0
5   F      NaN      8.0       12.0

可以看到,合并后的数据框中保留了所有的列,并且缺少的部分填充为NaN。如果需要指定其他的合并方式,比如只保留左侧数据框的数据,可以设置how参数的值为left,代码如下:

result = pd.merge(df1, df2, on='key', how='left')
print(result)

输出结果如下:

  key  value_x  value_y  new_value
0   A        1      NaN        NaN
1   B        2      5.0        9.0
2   C        3      NaN        NaN
3   D        4      6.0       10.0
总结

本文介绍了如何使用Pandas库合并不同列的数据框。在实际应用中,根据具体的需求选择不同的合并方式和参数,可以达到更好的效果。