【问题标题】:Merging two dataframes that have only one column that names the same合并两个只有一列名称相同的数据框
【发布时间】:2021-09-28 11:50:36
【问题描述】:
我是合并数据框的新手。
我想比较两个数据框:
左:
A
0 a
1 b
2 d
正确
A
0 a
1 b
2 c
3 d
我想要这样的东西:
A A_1
0 a a
1 b b
2 NaN c
3 d d
是否可以使用合并/加入/比较功能来做到这一点?
【问题讨论】:
标签:
python
pandas
dataframe
merge
【解决方案1】:
是的,这是可能的。
您要求的是正确的外部联接/合并。
请参阅this 详细概述。
df_left = pd.DataFrame({'A': ['a', 'b', 'd']})
df_right = pd.DataFrame({'A': ['a', 'b', 'c', 'd']})
df_left.merge(df_right.rename(columns={'A':'A_1'}), left_on='A', right_on='A_1', how='right')
出来
A A_1
0 a a
1 b b
2 NaN c
3 d d
【解决方案2】:
如果您只想获取有关合并的信息,您可以使用 pd.merge 的指标参数:
pd.merge(df1, df2, how='outer', on='A', indicator=True)
A _merge
0 a both
1 b both
2 d both
3 c right_only
【解决方案3】:
你也可以使用join:
>>> left.set_index('A', drop=False) \
.join(right.set_index('A', drop=False), rsuffix='_1', how='outer') \
.reset_index(drop=True)
A A_1
0 a a
1 b b
2 NaN c
3 d d