python - Python Pandas 将选择性列转换为行
问题描述
我的数据集有一些关于不同年份的价格和销售额的信息。问题是每年实际上价格和销售的列标题都不同。例如 CSV 看起来像
项目 | 2018年价格 | 2019年价格 | 2020年价格 | 2018年销售额 | 2019年销售额 | 2020年销售额 |
---|---|---|---|---|---|---|
一个 | 100 | 120 | 135 | 5000 | 6000 | 6500 |
乙 | 110 | 130 | 150 | 2000 | 4000 | 4500 |
C | 150 | 110 | 175 | 1000 | 3000 | 3000 |
我想向它展示这样的东西
项目 | 年 | 价格 | 销售量 |
---|---|---|---|
一个 | 2018 | 100 | 5000 |
一个 | 2019 | 120 | 6000 |
一个 | 2020 | 135 | 6500 |
乙 | 2018 | 110 | 2000 |
乙 | 2019 | 130 | 4000 |
乙 | 2020 | 150 | 4500 |
C | 2018 | 150 | 1000 |
C | 2019 | 110 | 3000 |
C | 2020 | 175 | 3000 |
我像这样使用 Pandas 的融化功能 df.melt(id_vars = ['Items'], var_name="Year", value_name="Price")
但是我在为价格和销售额获取单独的列时遇到了困难,因为它在一列中给出了价格和销售额。谢谢
解决方案
让我们试试熊猫wide_to_long
pd.wide_to_long(df, i='Items', j='year',
stubnames=['Price', 'Sales'],
suffix=r'\d+', sep=' in ').sort_index()
Price Sales
Items year
A 2018 100 5000
2019 120 6000
2020 135 6500
B 2018 110 2000
2019 130 4000
2020 150 4500
C 2018 150 1000
2019 110 3000
2020 175 3000
推荐阅读
- c++ - 即使应用了错误条件,while循环也不会退出
- ios - Flutter - ListView 图像在滚动时过早消失,仅限物理 iOS 设备
- c# - 如果在解决方案文件中的任何项目中设置了某些 MsBuild 属性,有没有办法引发自定义编译错误?
- sql - 在存储过程中使用 like 运算符
- .htaccess - 我如何使用 .htaccess 将 www 获取到非 www 然后进入 web 根子文件夹
- c++ - C++ 设计问题(使用带有受保护成员的模型演示者视图)
- asp.net - ASP.Net Razor 页面生成错误的 URL
- java - 如何让 stdlib.jar 在 Intellij 中工作?
- perl - perl 和 sed 中的相同正则表达式的工作方式不同
- android - 如何为小于O的android创建通知通道