首页 > 解决方案 > 如何在这个 pandas 数据框上正确使用 pivot ?

问题描述

我有以下df:

Item  Service    Damage    Type          Price
A      Fast       3.5         1          15.48403728
A      Slow       3.5         1          17.41954194
B      Fast        5          1          19.3550466
B      Slow        5          1          21.29055126
C      Fast       5.5         1          23.22605592
and so on

我想把它变成这种格式:

Item  Damage  Type   Price_Fast Price_slow

所以第一行是:

Item    Damage     Type    Price_Fast    Price_slow
A        3.5         1        15.4840..     17.41954...

我试过了:

df.pivot(index=['Item', 'Damage', 'Type'],columns='Service', values='Price')

但它抛出了这个错误:

ValueError: Length of passed values is 2340, index implies 3

标签: pythonpython-3.xpandas

解决方案


要准确获得您想要使用的数据框布局

dfData = dfRaw.pivot_table(index=['Item', 'Damage', 'Type'],columns='Service', values='Price')

像@CJR建议后跟

dfData.reset_index(inplace=True)

展平数据框和

dfData.rename(columns={'Fast': 'Price_fast'}, inplace=True) dfData.rename(columns={'Slow': 'Price_slow'}, inplace=True)

获取您想要的列名。

然后使用

dfNew.columns = dfNew.columns.values

摆脱自定义索引标签并完成(感谢@Akaisteph7 指出我之前的解决方案还没有完成。)


推荐阅读