vev*_*man 0 python pivot pandas
样品:
print (df)
Week Category Sales
0 202001 Red 100
1 202001 White 200
2 202002 Red 300
3 202002 White 700
4 201901 Red 800
5 201901 White 900
6 201902 Red 100
7 201902 White 200
Run Code Online (Sandbox Code Playgroud)
样品:
输出:
Week Category 2019 2020
0 1 Red 800 100
1 1 White 900 900
2 2 Red 100 300
3 2 White 200 700
Run Code Online (Sandbox Code Playgroud)
您可以使用模数和整数除法来提取years 和week,创建 MultiIndex byDataFrame.set_index和最后重塑 bySeries.unstack将索引转换为列并删除列名DataFrame.rename_axis:
df1 = (df.set_index([df['Week'] % 100, df['Week'] // 100])['Sales']
.unstack()
.rename_axis(None, axis=1)
.reset_index())
print (df1)
Week 2019 2020
0 1 700 100
1 2 800 200
2 3 900 300
Run Code Online (Sandbox Code Playgroud)
编辑:您需要添加列名set_index:
df1 = (df.set_index([df['Week'] % 100, 'Category', df['Week'] // 100])['Sales']
.unstack()
.rename_axis(None, axis=1)
.reset_index())
print (df1)
Week Category 2019 2020
0 1 Red 800 100
1 1 White 900 200
2 2 Red 100 300
3 2 White 200 700
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
32 次 |
| 最近记录: |