python - Pandas DataFrame 中的数据透视表 - 将行变为列
问题描述
所以我有一个数据框,其中州是美国州代码,年份列有该特定州的值,数据框有所有州的值,有没有一种方法可以让我有一个“年” " 所有年份的列,值仅在一列中。
My current dataframe :
STATE YEAR2021 YEAR2022 YEAR2023 ....
XX XX XX XX
Desired DataFrame:
STATE YEAR VALUE
XX 2021 XX
XX 2022 XX
XX 2023 XX
我如何在python中实现这一点?
解决方案
您可以使用以下内容:
df2 = (df.set_index('STATE')
.stack()
.reset_index()
.rename(columns={'level_1': 'YEAR',
0: 'VALUE'})
)
df2['YEAR'] = df2['YEAR'].str[4:]
输入:
STATE YEAR2021 YEAR2022 YEAR2023
0 AA XX YY ZZ
输出:
STATE YEAR VALUE
0 AA 2021 XX
1 AA 2022 YY
2 AA 2023 ZZ
推荐阅读
- opencv - 使用 Tesseract 和 Opencv 程序进行 OCR 会遇到一些错误
- php - 如何显示网站访问者的 IPv4 和 IPv6 地址
- python - 从今天即 2019-12-18 开始,在气流中安排一个 DAG 每 5 分钟运行一次
- javascript - Jquery 显示和隐藏无法正常工作
- html - 我应该如何使用 :root 伪类?
- c++ - “可读大小为'x * 4,但可以写入/读取8'字节”与数组
- c++ - 在 Qt 上下文菜单中隐藏重新加载操作
- python - 启动器中的致命错误:无法创建进程-scrapy
- sum - 如何使用 AT END OF 和 SUM 聚合负值?
- java - 用 Java 获取 PostgreSQL 数据库的大小