我有一个用于时间序列分析的数据集,如下所示:
Year Jan Feb March April May June July Aug Sep Oct Nev Dec
2014 0 0 0 0 0 4 0 118 0 0 137 29
2015 0 19 135 312 0 78 67 0 0 0 132 0
2016 0 0 0 0 0 0 0 0 100 194 0 114
2017 0 0 127 4 199 293 0 0 0 23 0 0
2018 252 0 0 0 0 0 287 0 2 0 0 143
2019 0 10 0 0 176 205 51 0 0 0 0 0
2020 0 0 310 0 0 0 0 0 0 0 0 0
我希望数据如下所示:
Date Value
2014-01 0
2014-02 0
2014-03 0
2014-04 0
2014-05 0
2014-06 4
.. .. .. ..
2020-12 0
如何转换数据框并将列缩小为行?
让我们检查一下 melt
df.columns = df.columns[[0]].tolist() + list(range(1,13))
s = df.melt('Year')
s['Year-month'] = s[['Year','variable']].astype(str).agg('-'.join, 1)
s
Out[39]:
Year variable value Year-month
0 2014 1 0 2014-1
1 2015 1 0 2015-1
2 2016 1 0 2016-1
3 2017 1 0 2017-1
4 2018 1 252 2018-1
.. ... ... ... ...
79 2016 12 114 2016-12
80 2017 12 0 2017-12
81 2018 12 143 2018-12
82 2019 12 0 2019-12
83 2020 12 0 2020-12
[84 rows x 4 columns]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句