首页 > 解决方案 > 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中实现这一点?

标签: pythonpandasdataframedata-sciencepivot-table

解决方案


您可以使用以下内容:

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

推荐阅读