如何旋转pandas数据帧

che*_*cks 6 python pandas

假设我们有一个如下所示的DataFrame:

day_of_week   ice_cream     count   proportion
0   Friday    vanilla       638     0.094473
1   Friday    chocolate     2048    0.663506
2   Friday    strawberry    4088    0.251021
3   Monday    vanilla       448     0.079736
4   Monday    chocolate     2332    0.691437
5   Monday    strawberry    441     0.228828
6   Saturday  vanilla       24      0.073350
7   Saturday  chocolate     244     0.712930  ...   ...
Run Code Online (Sandbox Code Playgroud)

我想要一个新的DataFrame day_of_week作为索引折叠,所以它看起来像这样:

    day_of_week vanilla    chocolate   strawberry
0   Friday      0.094473   0.663506    0.251021 
1   Monday      0.079736   0.691437    0.228828
2   Saturday    ...        ...         ...
Run Code Online (Sandbox Code Playgroud)

我能实现这个最干净的方法是什么?

Seb*_*zny 4

df.pivot_table是正确的解决方案:

In[31]: df.pivot_table(values='proportion', index='day_of_week', columns='ice_cream').reset_index()
Out[31]: 
    ice_cream day_of_week  chocolate  strawberry   vanilla
0              Friday   0.663506    0.251021  0.094473
1              Monday   0.691437    0.228828  0.079736
2            Saturday   0.712930         NaN  0.073350
Run Code Online (Sandbox Code Playgroud)

如果您忽略reset_index()它,它实际上会返回一个索引数据帧,这可能对您更有用。

values请注意,当列不是元组的函数时,数据透视表必须执行降维(index, columns)。如果存在多个(index, columns)不同的对,value pivot_table则默认情况下使用聚合函数将维度降至一mean