两个数据框的完全外部连接
Full outer join of two dataframes
在所有列中保留连接键的完全外部连接
我有三个维度为 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
尝试了几个小时来解决这个问题
如有任何帮助,我们将不胜感激!
谢谢!
使用concat
in list comprehension with create index by first column by 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
在所有列中保留连接键的完全外部连接
我有三个维度为 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
如有任何帮助,我们将不胜感激! 谢谢!
使用concat
in list comprehension with create index by first column by 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