根据索引合并两个数据帧(从pivottable创建一个df)

时间:2017-10-29 20:28:09

标签: python pandas dataframe merge pivot-table

我有两个数据帧:

DF1:

Dept  Produce  
Acct   
111 Fruit  
222 Vegetable

DF2:

Acct Spent LastIn  
111 50 Monday  
222 75 Tuesday 

我希望我的新数据帧DF3看起来像这样:

DF3:

Acct Produce Spent LastIn  
111 Fruit 50 Monday  
222 Vegetable 75 Tuesday

我一直在尝试使用: pd.merge(DF1,DF2, on='Acct'),但我得到一个冗长的错误,结尾于:

  

KeyError:'Acct'

我相信这是因为DF1是转换后的pivottable而python认为DEPT是实际的索引。所以我尝试使用.drop从DF1中删除“Acct”行但不能,因为我收到此错误:

  

ValueError:标签['Acct']未包含在轴中。

如何到达我想要的终端状态DF3?

1 个答案:

答案 0 :(得分:1)

IIUC:

样本DF:

In [57]: d1
Out[57]:
Dept    Produce
Acct
111       Fruit
222   Vegetable

DF指数:

In [60]: d1.index
Out[60]: Int64Index([111, 222], dtype='int64', name='Acct')

列:

In [61]: d1.columns
Out[61]: Index(['Produce'], dtype='object', name='Dept')

DF2:

In [58]: d2
Out[58]:
   Acct  Spent   LastIn
0   111     50   Monday
1   222     75  Tuesday

解决方案:

In [59]: d2.merge(d1, left_on='Acct', right_index=True)
Out[59]:
   Acct  Spent   LastIn    Produce
0   111     50   Monday      Fruit
1   222     75  Tuesday  Vegetable