Pandas将索引与多索引合并而不合并

2024-04-24 16:28:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个索引,其中包含我希望在结果数据帧(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来实现这一点,但速度很慢(这是我想要的最终结果,不使用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或任何比merge更快的方法组合数据帧的想法