【发布时间】:2022-01-07 10:41:23
【问题描述】:
我创建了一个小型数据集,比较每杯尺寸的咖啡饮料价格。
当我旋转我的数据集时,输出会自动按字母顺序重新排序索引(“大小”列)。
有没有办法为不同的大小分配一个数字级别(例如,小 = 0、中 = 1、大 = 2)并以这种方式重新排列行?
我知道这可以使用 forcats 库在 R 中完成(例如使用 fct_relevel),但我不知道如何在 python 中执行此操作。我更愿意保留使用 numpy 和 pandas 的解决方案。
data = {'Item': np.repeat(['Latte', 'Americano', 'Cappuccino'], 3),
'Size': ['Small', 'Medium', 'Large']*3,
'Price': [2.25, 2.60, 2.85, 1.95, 2.25, 2.45, 2.65, 2.95, 3.25]
}
df = pd.DataFrame(data, columns = ['Item', 'Size', 'Price'])
df = pd.pivot_table(df, index = ['Size'], columns = 'Item')
df
# Price
# Item Americano Cappuccino Latte
# Size
# Large 2.45 3.25 2.85
# Medium 2.25 2.95 2.60
# Small 1.95 2.65 2.25
【问题讨论】:
-
df = df.reindex(["Small", "Medium", "Large"])?
标签: python pandas dataframe sorting ranking