python - 使用熊猫重塑/堆叠2列?
问题描述
我对 Python/Pandas 比较陌生。我有一个按周列出的销售和单位产品列表,如下所示:
Product(index) Desc1 Desc2 Desc3 Week1 Week2 Week3 Week1.1 Week2.1 Week3.1
Product1 Words1 Words1 Words1 $$$ $$$ $$$ ### ### ###
Product2 Words2 Words2 Words2 $$$ $$$ $$$ ### ### ###
Product3 Words3 Words3 Words3 $$$ $$$ $$$ ### ### ###
期望的结果是:
Product(index) Desc1 Desc2 Desc3 Sales (By Week) Units (By Week)
Product1 Words1 Words1 Words1 $$$ ###
Product1 Words1 Words1 Words1 $$$ ###
Product1 Words1 Words1 Words1 $$$ ###
.
.
.
ProductN WordsN WordsN WordsN $$$ ###
ProductN WordsN WordsN WordsN $$$ ###
ProductN WordsN WordsN WordsN $$$ ###
我尝试用多索引做一些事情:
iterables = [[Desc1, Desc2, Desc3],
[Week1, Week2, Week3, Week1.1, Week2.1, Week3.1]]
test1 = pd.DataFrame(iterables, names=['Sales', 'Units'])
pd.MultiIndex.from_frame(test1)
附带说明一下,销售日期和单位日期是相同的(例如 8 月 1 日至 5 日),但是当 I 时,由于重复read_csv
,它加载了第二列。.1
这是一个问题吗?
解决方案
让我们尝试使用pandas.melt
+pandas.concat
import pandas as pd
sales = (
pd.melt(df, id_vars=['Product(index)', 'Desc1', 'Desc2', 'Desc3'],
value_vars=['Week1', 'Week2', 'Week3'],
value_name='Sales (By Week)')
)
unit = (
pd.melt(df, id_vars=['Product(index)', 'Desc1', 'Desc2', 'Desc3'],
value_vars=['Week1.1', 'Week2.1', 'Week3.1'],
value_name='Units (By Week)')
)
print(pd.concat([sales, unit[['Units (By Week)']]], axis=1))
Product(index) Desc1 Desc2 ... variable Sales (By Week) Units (By Week)
0 Product1 Words1 Words1 ... Week1 $$$ ###
1 Product2 Words2 Words2 ... Week1 $$$ ###
2 Product3 Words3 Words3 ... Week1 $$$ ###
3 Product1 Words1 Words1 ... Week2 $$$ ###
4 Product2 Words2 Words2 ... Week2 $$$ ###
5 Product3 Words3 Words3 ... Week2 $$$ ###
6 Product1 Words1 Words1 ... Week3 $$$ ###
7 Product2 Words2 Words2 ... Week3 $$$ ###
8 Product3 Words3 Words3 ... Week3 $$$ ###
推荐阅读
- javascript - 如何从输入中获取价值并与本地存储数据比较价值以使电子邮件不重复?
- jquery - 暴露 loader webpack 插件
- intellij-idea - Intellij How to - 在创建运行配置时以编程方式在远程配置中为 PORT 和 HOST 参数注入自定义值
- javascript - React-Native 导航文件夹
- javascript - 如果我使用我的 Threejs 空白画布
- java - 停止旧进程在jobservice android java中创建新进程
- python - ijv mpmath 矩阵的稀疏矩阵表示(coo_matrix 等效)
- python - VS Code 继续选择 PowerShell 来运行 Python 脚本
- docker - 我们如何在 uWSGI 中设置最大日志文件数?
- windows - 跟踪失败的登录尝试 Windows Server