Pandas 外部合并

问题描述 投票:0回答:1

我有两个数据框 数据框 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
python pandas dataframe
1个回答
0
投票

您的问题是合乎逻辑的,您正在对两个数据帧进行外连接,这两个数据帧的键多次出现(在本例中为

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)

我希望这有帮助!

© www.soinside.com 2019 - 2024. All rights reserved.