首页 > 解决方案 > 部分取消pandas DataFrame

问题描述

我有下表DataFrame

项目 描述 商店 1 数量 存储 1 个值 店铺 2 数量 存储 2 值
第 1 项 一些物品名称 5 120 7 240
第 2 项 其他一些项目 9 1234 12 98

在 Python 上是否有任何简单的方法可以仅取消透视存储?要做到这一点:

项目 描述 店铺编号 价值 数量
项目 1 一些物品名称 商店 1 5 120

我正在考虑完全取消它,然后将其转回保持价值和数量作为价值。但我认为,应该有一些更有效的解决方案

标签: pythonpandasdataframepivot-table

解决方案


如果需要Qty, Value分隔列将第一列转换为MultiIndex,那么可能使用Series.str.rsplit最后一个空格到MultiIndex in columns,所以最后一次整形DataFrame.stack

df = df.set_index(['Items','Description'])
df.columns = df.columns.str.rsplit(n=1, expand=True)
df = df.rename_axis(('Store number',None), axis=1).stack(0).reset_index()
print (df)
    Items      Description Store number  Qty  Value
0  item 1   Some item name      Store 1    5    120
1  item 1   Some item name      Store 2    7    240
2  item 2  Some other item      Store 1    9   1234
3  item 2  Some other item      Store 2   12     98

推荐阅读