我有两个数据框 数据框 1
col1 col2
1 A
1 B
2 C
5 Z
数据框2
col1 col2
1 A
1 B
2 E
3 X
我正在执行外部合并
merge = pd.merge(dataframe1, datagrame2, on="col1", how='outer')
我明白了
col1 col2_x col2_y
1 A A
1 A B
1 B A
1 B B
2 C E
5 Z NAN
3 NAN X
如何获得如下输出
col1 col2_x col2_y
1 A A
1 B B
2 C E
5 Z NAN
3 NAN X
您的问题是合乎逻辑的,您正在对两个数据帧进行外连接,这两个数据帧的键多次出现(在本例中为
col1
)。
您可以创建一个列来指定 col1
中的值的交换计数,并在合并中使用它来实现一对一的外连接。
这是创建数据框后缺少的内容:
import pandas as pd
df = (pd.DataFrame({
'col1': [1, 1, 2, 5],
'col2': ['A', 'B', 'C', 'Z'],
})
.assign(aux=lambda df_: df_.groupby('col1').cumcount())
)
df2 = (pd.DataFrame({
'col1': [1, 1, 2, 3],
'col2': ['A', 'B', 'E', 'X'],
})
.assign(aux=lambda df_: df_.groupby('col1').cumcount())
)
# display(df)
# display(df2)
merged_df = df.merge(df2, on=['col1', 'aux'], how='outer', suffixes=('_x', '_y')).drop('aux', axis=1)
print(merged_df)
我希望这有帮助!