python - 部分取消pandas DataFrame
问题描述
我有下表DataFrame
项目 | 描述 | 商店 1 数量 | 存储 1 个值 | 店铺 2 数量 | 存储 2 值 |
---|---|---|---|---|---|
第 1 项 | 一些物品名称 | 5 | 120 | 7 | 240 |
第 2 项 | 其他一些项目 | 9 | 1234 | 12 | 98 |
在 Python 上是否有任何简单的方法可以仅取消透视存储?要做到这一点:
项目 | 描述 | 店铺编号 | 价值 | 数量 |
---|---|---|---|---|
项目 1 | 一些物品名称 | 商店 1 | 5 | 120 |
我正在考虑完全取消它,然后将其转回保持价值和数量作为价值。但我认为,应该有一些更有效的解决方案
解决方案
如果需要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
推荐阅读
- spring-boot - 无法从 spring boot 连接到 maria db
- r - R 中的 odbc 包在连接到 Oracle 数据库时抛出了段错误
- laravel - 未添加身份验证用户
- c - for循环中的OpenGL glPushMatrix()和glPopMatrix
- python - ValueError:模型的特征数量必须与输入匹配。在随机森林中模型 n_features 为 10,输入 n_features 为 7
- javascript - 如何正确地将可滚动效果添加到
Vuetify 框架的组件? - java - 使用 java 以编程方式传递 SCM 命令并尝试在 Eclipse 控制台上获取结果
- express - Axios 获取请求在本地工作,但在无服务器上超时
- angular - 将base 64下载到xls
- sap-erp - 计算 CA70 后面的表中的行数