【问题标题】:Pandas dataframe: turn date in column into value in row熊猫数据框:将列中的日期转换为行中的值
【发布时间】:2015-11-11 10:49:56
【问题描述】:

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

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 的方式。

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

【问题讨论】:

    标签: python pandas dataframe rows


    【解决方案1】:

    你可以使用 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
    

    【讨论】:

    • 简直太棒了。从来不知道“融化”,效果很好。
    猜你喜欢
    • 1970-01-01
    • 2015-03-25
    • 2019-12-16
    • 2019-01-24
    • 1970-01-01
    • 2017-06-22
    • 2021-12-18
    • 2019-01-08
    • 1970-01-01
    相关资源
    最近更新 更多