我有以下熊猫数据框,我想转置它。
年 | CD_PRD | 维基百科 | 最大有效射程 | 虚拟地址 | VL_APR |
---|---|---|---|---|---|
2022 | CD76 | 10000 | 8000 | 170000 | 58000 |
2022 | CD92 | 15000 | 7500 | 86000 | 1200 |
2023 | CD76 | 8000 | 12000 | 15000 | 5000 |
2023 | CD92 | 12000 | 4560 | 10480 | 15600 |
2024 | CD76 | 400 | 8000 | 45800 | 120 |
2024 | CD92 | 56000 | 10200 | 150000 | 1500 |
我需要的是将值列名称(例如 VL_JAN | VL_FEB | VL_MAR | VL_APR )转换为行,将行(CD-PRD)转换为线,以便在末尾包含以下数据框:
年 | 几个月 | VL_CD76 | VL_CD92 |
---|---|---|---|
2022 | 一月 | 10000 | 15000 |
2022 | 二月 | 8000 | 7500 |
2022 | 3月 | 170000 | 86000 |
2022 | 急性淋巴细胞白血病 | 58000 | 1200 |
2023 | 一月 | 8000 | 12000 |
2023 | 二月 | 12000 | 4560 |
2023 | 3月 | 15000 | 10480 |
2023 | 急性淋巴细胞白血病 | 5000 | 15600 |
2024 | 一月 | 400 | 56000 |
2024 | 二月 | 8000 | 10200 |
2024 | 3月 | 45800 | 150000 |
2024 | 急性淋巴细胞白血病 | 120 | 1500 |
我做了以下操作,但似乎我错过了一些东西并且没有设法获得正确的数据框结构。
df3 = df2.pivot(index='YEAR', columns=['CD_PRD'], values=['VL_JAN', 'VL_FEB', 'VL_MAR', 'VL_APR']).reset_index()
print(df3)
任何帮助都非常感谢。谢谢!
马西奥
一种可能的解决方案,其步骤如下:
第一步是将数据框的索引设置
df
为列YEAR
并CD_PRD
使用该set_index
方法。然后,
stack
使用该方法将列转换为行,从而创建分层索引。然后应用该
unstack
方法将索引的最内层重新转换为列。该
reset_index
方法用于重置数据框的索引,将索引重新转换为列。该
rename_axis
方法用于删除轴的名称。该
set_axis
方法用于将数据框的列重命名为列表colnames
。最后,该
pipe
方法用于应用一个 lambda 函数,该函数使用该方法通过从使用该方法的列中的值中删除前缀assign
来创建一个新列。MONTH
VL_
MONTH
str.replace
输出: