我有一个索引,其中包含要在结果数据帧(df3
)中显示的所有值:
df1 = pd.DataFrame(['aa', 'bb', 'cc', 'dd', 'ee']).set_index(0)
------------------------------------
Empty DataFrame
Columns: []
Index: [aa, bb, cc, dd, ee]
我正在尝试将此索引与另一个df(df2
)连接起来:
df2 = pd.DataFrame([['bb', 'xxx', 777, 888], ['dd', 'yyy', 999, 0]]).set_index([0, 1])
------------------------------------
2 3
0 1
bb xxx 777 888
dd yyy 999 0
我可以使用merge
来做到这一点,但是它很慢(这是我想要的最终结果,无需使用合并):
df3 = df1.reset_index().merge(df2.reset_index(), how='left').set_index([0, 1])
------------------------------------
2 3
0 1
aa NaN NaN NaN
bb xxx 777.0 888.0
cc NaN NaN NaN
dd yyy 999.0 0.0
ee NaN NaN NaN
我想使用join
,但是我无法合并索引,即使我指定了how='outer'
并保留两个索引,df1索引也会被删除。
df3 = df1.join(df2, how='outer')
------------------------------------
2 3
0 1
bb xxx 777 888
dd yyy 999 0
关于如何使用join或concat或比合并更快的速度组合数据帧的想法?