我有以下熊猫数据框架:
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
和size
列的每个唯一行值的quantity
值。所以看起来应该这样:
A B
black 0 5
red 2 0
small 2 1
medium 0 4
可以做到吗?像 df.pivot(columns='store')
这样的东西似乎是要走的路...
您可以使用melt
和pivot_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