使用 pandas 数据框列值来透视其他列

Posted

技术标签:

【中文标题】使用 pandas 数据框列值来透视其他列【英文标题】:Use pandas dataframe column values to pivot other columns 【发布时间】:2019-04-06 21:26:00 【问题描述】:

我有以下dataframe 想要重塑:

  dir  hour  board_sign  pass
   1    5      d          294
   1    5      u          342
   1    6      d          1368
   1    6      u          1268
   1    7      d          3880
   1    7      u          3817

我想要做的是将“board_sign”中的值用作新列,其中将包含“pass”列中的值,以便dataframe 看起来像这样:

  dir   hour     d     u
  1      5     294    342
  1      6     1368   1268
  1      7     3880   3817

我已经尝试了几个函数,如熔化数据透视堆栈和取消堆栈,但似乎它们都没有给出想要的结果,我也尝试了 pivot_table,但由于多索引,它很难迭代。

这似乎是一个简单的操作,但我就是做错了。 有没有其他我可以使用的功能?

谢谢。

【问题讨论】:

df.set_index(['dir','hour','board_sign'])['pass'].unstack() 还有df.pivot_table(columns='board_sign',index=['dir','hour'],values='pass') 谢谢!!这正是我想要的! 【参考方案1】:

使用pivot_table:

df = df.pivot_table(index=['dir', 'hour'], columns='board_sign', values='pass').reset_index()
del df.columns.name

df
    dir hour    d   u
0   1     5   294   342
1   1     6   1368  1268
2   1     7   3880  3817

【讨论】:

我一开始尝试了 pivot_table 选项,它起作用了。问题是我很难使用输出,因为数据透视表中的多索引。 reset_index() 多索引不见了

以上是关于使用 pandas 数据框列值来透视其他列的主要内容,如果未能解决你的问题,请参考以下文章

我的 PIVOT 返回重复行,每行中都有数据透视列值

如何查看具有实际列值的数据透视表,例如在 excel 中的访问

SQL 透视列值

Pandas:编写一个包含所有列的数据透视表以表现出色

Laravel - 从数据透视表中获取额外的列值

Python:一次包含重复值的多个列的 Pandas 数据透视表