python - Pandas 数据框 : turn date in column into value in row

标签 python pandas dataframe rows

我正在尝试转换以下数据框(包含县和年份的值)

county  region     2012  2013  ...  2035
A       101        10    15    ...  7
B       101        13    8     ...  11
...

进入如下所示的数据框:

county  region   year  sum
A       101      2012  10
A       101      2013  15
...     ...      ...   ...
A       101      2035  7
B       101      2012  13
B       101      2013  8
B       101      2035  11

我当前的数据框有 400 行(不同的县),其中包含 2012-2035 年的值。

我的手动方法是将年份列切掉,并将每一列都放在前一年的最后一行下面。但当然必须有一种 pythonic 方式。

我想我在这里遗漏了一个基本的 pandas 概念,可能我只是找不到这个问题的正确答案,因为我根本不知道如何提出正确的问题。请温柔对待新人。

最佳答案

您可以使用来自 pandas 的 melt:

In [26]: df
Out[26]:
  county  region  2012  2013
0      A     101    10    15
1      B     101    13     8

In [27]: pd.melt(df, id_vars=['county','region'], var_name='year', value_name='sum')
Out[27]:
  county  region  year  sum
0      A     101  2012   10
1      B     101  2012   13
2      A     101  2013   15
3      B     101  2013    8

关于python - Pandas 数据框 : turn date in column into value in row,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33648986/

相关文章:

python - 替换单个 DataFrame 列中的负值

r - 如何将大多数因素的数据框转换为数值矩阵;不公开不起作用

python - 使用 python 进行 Elasticsearch 按时间戳排序

python - 如何在 pandas 中重置 cumsum streak

python - 来自 datetimeindex pandas 的时间序列 x 轴日期

python - 我们如何使用 pandas 在 python 中使用 Coalesce 来处理多个数据帧

r - 在 R 中一次清理数据框的所有列

python - Whitenoise 和 django-compressor 导致压缩文件出现 404

python - 复杂的 Python 对象到 JSON 的转换

python - 在 pandas Dataframe 的每一行中搜索字符串并返回找到的列名称