我有一组数据框,我想连接它们:
1 1,1
(0, 0) 111
(0, 1) 256
(1, 0) 252
(1, 1) 381
2 1,3
(0, 0) 50
(0, 1) 85
(0, 2) 119
(0, 3) 191
(1, 0) 88
(1, 1) 111
(1, 2) 157
(1, 3) 199
3 1,4
(0, 0) 21
(0, 1) 56
(0, 2) 88
(0, 3) 130
(0, 4) 136
(1, 0) 67
(1, 1) 81
(1, 2) 121
(1, 3) 138
(1, 4) 162
结果应该是这样的:
1,1 1,4 1.3
(0, 0) 111 21 50
(0, 1) 256 56 85
(0, 2) NaN 88 119
(0, 3) NaN 130 191
(0, 4) NaN 136 NaN
(1, 0) 252 67 88
(1, 1) 381 81 111
(1, 2) NaN 121 157
(1, 3) NaN 138 199
(1, 4) NaN 162 NaN
我用它来连接集合:
df = pd.concat(s_ds)
轴= 1但是我得到一个结果,每个元素都用键分隔。可以帮我找到一种方法来合并存储在s_ds中的数据集合而不用密钥吗?
答案 0 :(得分:1)
您可以使用df.join
的外部联接(如果您有2-3个数据框,则仍然可以):
In [262]: df.join(df2, how='outer').join(df3, how='outer')
Out[262]:
1,1 1,3 1,4
(0, 0) 111.0 50.0 21
(0, 1) 256.0 85.0 56
(0, 2) NaN 119.0 88
(0, 3) NaN 191.0 130
(0, 4) NaN NaN 136
(1, 0) 252.0 88.0 67
(1, 1) 381.0 111.0 81
(1, 2) NaN 157.0 121
(1, 3) NaN 199.0 138
(1, 4) NaN NaN 162
此处,df
,df2
和df3
是您的三个数据框。
替代使用pd.concat
(对于多个数据框更好,就像您的情况一样):
In [278]: df = pd.concat([df, df2, df3], axis=1)
In [279]: df.index = df.index.to_series()
In [280]: df
Out[280]:
1,1 1,3 1,4
(0, 0) 111.0 50.0 21
(0, 1) 256.0 85.0 56
(0, 2) NaN 119.0 88
(0, 3) NaN 191.0 130
(0, 4) NaN NaN 136
(1, 0) 252.0 88.0 67
(1, 1) 381.0 111.0 81
(1, 2) NaN 157.0 121
(1, 3) NaN 199.0 138
(1, 4) NaN NaN 162