Pandas merge() - 合并两个数据帧对象

Pandas DataFrame merge() 函数用于合并两个 DataFrame 对象以数据库类型的合并操作。合并是在列或索引上执行的。

Pandas DataFrame merge() 函数语法

merge() 函数的语法是:

 1def merge(
 2    self,
 3    right,
 4    how="inner",
 5    on=None,
 6    left_on=None,
 7    right_on=None,
 8    left_index=False,
 9    right_index=False,
10    sort=False,
11    suffixes=("_x", "_y"),
12    copy=True,
13    indicator=False,
14    validate=None,
15)

:另一个DataFrame与源DataFrame合并. (_ ( ) ** 如何**:左 " 、 " 右 " 、 " 外 " 、 " 内 " 、 " 内 " 。 这是定义合并操作类型的最重要的参数. 这些与SQL左外接合,右外接合,全外接合,和内接合类似.

  • ** 在**:要加入的列或索引级别名称。 这些列必须出现在两个 DataFrames 中。 如果不提供,则使用两个 DataFrames 中的列相交点。
  • ** left_on**:要加入左侧 DataFrame 的列或索引级别名称。 () ( )* ** right_on**: 加入右侧 DataFrame 的列或索引级别名称() ( )* ** left_index**:将左侧DataFrame的索引作为连接键。
  • ** 右侧索引**: 使用来自右侧 DataFrame 的索引作为连接键 。 () ( )* ** sort**:在结果DataFrame中按词法排序组合键。 () ( )* 后缀:后缀分别适用于左侧和右侧相重叠的列名. (_ ( )* ** 指标 **:如果 True,则在输出 DataFrame 中添加一列,称为 _ commerce ,其中包含每行来源的信息。
  • 验证:用于验证合并过程. 有效值为 { 一到一1: 1、`一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一到一

Pandas DataFrame merge() 示例

让我们看看两个DataFrame对象的合并的一些例子。

默认合并 - 内部合并

 1import pandas as pd
 2
 3d1 = {'Name': ['Pankaj', 'Meghna', 'Lisa'], 'Country': ['India', 'India', 'USA'], 'Role': ['CEO', 'CTO', 'CTO']}
 4
 5df1 = pd.DataFrame(d1)
 6
 7print('DataFrame 1:\n', df1)
 8
 9df2 = pd.DataFrame({'ID': [1, 2, 3], 'Name': ['Pankaj', 'Anupam', 'Amit']})
10print('DataFrame 2:\n', df2)
11
12df_merged = df1.merge(df2)
13print('Result:\n', df_merged)

输出:

 1DataFrame 1:
 2      Name Country Role
 30 Pankaj India CEO
 41 Meghna India CTO
 52 Lisa USA CTO
 6DataFrame 2:
 7    ID Name
 80 1 Pankaj
 91 2 Anupam
102 3 Amit
11Result:
12      Name Country Role ID
130 Pankaj India CEO 1

将数据框架与左、右和外部合并合并

1print('Result Left Join:\n', df1.merge(df2, how='left'))
2print('Result Right Join:\n', df1.merge(df2, how='right'))
3print('Result Outer Join:\n', df1.merge(df2, how='outer'))

输出:

 1Result Left Join:
 2      Name Country Role ID
 30 Pankaj India CEO 1.0
 41 Meghna India CTO NaN
 52 Lisa USA CTO NaN
 6Result Right Join:
 7      Name Country Role ID
 80 Pankaj India CEO 1
 91 Anupam NaN NaN 2
102 Amit NaN NaN 3
11Result Outer Join:
12      Name Country Role ID
130 Pankaj India CEO 1.0
141 Meghna India CTO NaN
152 Lisa USA CTO NaN
163 Anupam NaN NaN 2.0
174 Amit NaN NaN 3.0

3、在特定列上合并数据框架

 1import pandas as pd
 2
 3d1 = {'Name': ['Pankaj', 'Meghna', 'Lisa'], 'ID': [1, 2, 3], 'Country': ['India', 'India', 'USA'],
 4      'Role': ['CEO', 'CTO', 'CTO']}
 5df1 = pd.DataFrame(d1)
 6
 7df2 = pd.DataFrame({'ID': [1, 2, 3], 'Name': ['Pankaj', 'Anupam', 'Amit']})
 8
 9print(df1.merge(df2, on='ID'))
10print(df1.merge(df2, on='Name'))

输出:

1Name_x ID Country Role Name_y
20 Pankaj 1 India CEO Pankaj
31 Meghna 2 India CTO Anupam
42 Lisa 3 USA CTO Amit
5
6     Name ID_x Country Role ID_y
70 Pankaj 1 India CEO 1

指定用于合并 DataFrame 对象的左和右列

 1import pandas as pd
 2
 3d1 = {'Name': ['Pankaj', 'Meghna', 'Lisa'], 'ID1': [1, 2, 3], 'Country': ['India', 'India', 'USA'],
 4      'Role': ['CEO', 'CTO', 'CTO']}
 5df1 = pd.DataFrame(d1)
 6
 7df2 = pd.DataFrame({'ID2': [1, 2, 3], 'Name': ['Pankaj', 'Anupam', 'Amit']})
 8
 9print(df1.merge(df2))
10
11print(df1.merge(df2, left_on='ID1', right_on='ID2'))

输出;

1Name ID1 Country Role ID2
20 Pankaj 1 India CEO 1
3
4   Name_x ID1 Country Role ID2 Name_y
50 Pankaj 1 India CEO 1 Pankaj
61 Meghna 2 India CTO 2 Anupam
72 Lisa 3 USA CTO 3 Amit

使用索引作为合并数据框架的合并密钥

 1import pandas as pd
 2
 3d1 = {'Name': ['Pankaj', 'Meghna', 'Lisa'], 'Country': ['India', 'India', 'USA'], 'Role': ['CEO', 'CTO', 'CTO']}
 4df1 = pd.DataFrame(d1)
 5
 6df2 = pd.DataFrame({'ID': [1, 2, 3], 'Name': ['Pankaj', 'Anupam', 'Amit']})
 7
 8df_merged = df1.merge(df2)
 9print('Result Default Merge:\n', df_merged)
10
11df_merged = df1.merge(df2, left_index=True, right_index=True)
12print('\nResult Index Merge:\n', df_merged)

输出:

1Result Default Merge:
2      Name Country Role ID
30 Pankaj India CEO 1
4
5Result Index Merge:
6    Name_x Country Role ID Name_y
70 Pankaj India CEO 1 Pankaj
81 Meghna India CTO 2 Anupam
92 Lisa USA CTO 3 Amit

参考

Published At
Categories with 技术
Tagged with
comments powered by Disqus