python - 根据索引合并两个数据帧(一个从数据透视表创建的 df)

标签 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 是转换后的数据透视表,而 python 认为 DEPT 是实际索引。因此,我尝试使用 .drop 从 DF1 中删除“Acct”行,但不能,因为我收到此错误:

ValueError: labels ['Acct'] not contained in axis.

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

最佳答案

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

关于python - 根据索引合并两个数据帧(一个从数据透视表创建的 df),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47004905/

相关文章:

python - 如果发生错误,则在循环中重复迭代

python - 非阻塞python进程或线程

Python:不排除 map (字典)之后的行

python - 即使index_col=None,Pandas read_excel有时也会创建索引

python - 使用最近的行填充数据框中的缺失值

python - Django/SQLite 用户模型 UNIQUE 约束失败

python - 允许用户使用 "extend"API函数

python - 获取真实值的 pandas 系列标签而不将系列存储在临时变量中

python - 根据其组重新定义 pandas 数据框

python - 如何创建循环来纠正数据框中的性别