【问题标题】:Transforming/pivoting a DataFrame Instance转换/旋转 DataFrame 实例
【发布时间】:2019-07-30 15:51:49
【问题描述】:

我有以下熊猫数据框:

import pandas as pd
data = dict(store=['A', 'B', 'B'], color=['red', 'black', 'black'], size=['small', 'medium', 'small'], quantity=[2, 4, 1])
df = pd.DataFrame(data)

看起来像这样:

  store  color    size  quantity
0     A    red   small         2
1     B  black  medium         4
2     B  black   small         1

我想要做的是pivot 函数来创建一个新的数据框,该数据框使用store 列作为标题,color 的每个唯一行值的quantity 值和size 列。所以它应该是这样的:

       A   B
black  0   5
red    2   0 
small  2   1
medium 0   4

这可以吗?像df.pivot(columns='store') 这样的东西似乎是要走的路……

【问题讨论】:

  • melt 然后枢轴:df.melt(['store', 'quantity']).pivot_table(index='value', columns='store', values='quantity', aggfunc='sum', fill_value=0)
  • 这是枢轴问题,您可以尝试搜索如何使用 for 循环进行枢轴,例如 pd.concat([df.pivot() for x in ['store', 'quantity'])])跨度>
  • @anky_91 很好,我的朋友,你可以在这里保留你的答案:-)

标签: python pandas pivot transform


【解决方案1】:

您可以使用meltpivot_table()

m=df.melt(['store','quantity'])

m.pivot_table(index='value',columns='store',values='quantity',aggfunc='sum',fill_value=0)

store   A  B
value       
black   0  5
medium  0  4
red     2  0
small   2  1

【讨论】:

  • 我出差了,手机小屏可能无法及时回复(iphone4 ....)
  • @anky_91 哇——熊猫魔法。非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-19
  • 2015-07-26
  • 1970-01-01
  • 2018-03-24
  • 1970-01-01
相关资源
最近更新 更多