两个数据帧的完全外连接
Posted
技术标签:
【中文标题】两个数据帧的完全外连接【英文标题】:Full outer join of two dataframes 【发布时间】:2020-06-10 04:50:08 【问题描述】:在所有列中保留连接键的完全外连接
我有三个尺寸为 m x 1 的数据框,每个数据框的 m 不同:
df1 = pd.DataFrame('x':['A1', 'A2', 'A3', 'A4'])
df2 = pd.DataFrame('y':['A1', 'A3', 'A5', 'A4'])
df3 = pd.DataFrame('z':['A1','A2', 'A5', 'A6'])
我想要一个像这样的数据框df_merged
:
x y z
0 A1 A1 A1
1 A2 nan A2
2 A3 A3 nan
3 A4 A4 nan
4 nan A5 A5
5 nan nan A6
尝试使用 pd.merge
和 pd.concat
和 pd.join
解决这个问题数小时
任何帮助将不胜感激! 谢谢!
【问题讨论】:
【参考方案1】:在列表理解中使用concat
并通过DataFrame.set_index
按第一列创建索引:
dfs = [df1, df2, df3]
df = pd.concat([x.set_index(x.iloc[:, 0], drop=False)
for x in dfs], axis=1, sort=True).reset_index(drop=True)
print (df)
x y z
0 A1 A1 A1
1 A2 NaN A2
2 A3 A3 NaN
3 A4 A4 NaN
4 NaN A5 A5
5 NaN NaN A6
【讨论】:
以上是关于两个数据帧的完全外连接的主要内容,如果未能解决你的问题,请参考以下文章