[英]I want to group column names and add their values in a df
这是我正在使用的 df:
2000-01 2000-02 2000-03 ... 2016-06 2016-07 2016-08
0 NaN NaN NaN ... 590200 588000 586400
1 204400.0 207000.0 209800.0 ... 580600 583000 585100
2 136800.0 138300.0 140100.0 ... 209100 211000 213000
3 52700.0 53100.0 53200.0 ... 127400 128300 129100
4 111000.0 111700.0 112800.0 ... 192800 194500 195900
5 131700.0 132600.0 133500.0 ... 198200 199300 200600
我想按季度每 3 个月分组并添加它们的值。 所以它应该有这样的列: 2000q1, 2000q2... 并且 2000q1 的值应该是 2000-01, 2000-02, 2000-03 值的总和。 等等...
现在我使用 for 嵌套循环来做这个,这是非常低效和缓慢的。 知道如何使这更有效和更短吗?
cols = pd.date_range('2000-01-31', '2001-08-31', freq='M').strftime('%Y-%m')
df = pd.DataFrame(1, index=range(3), columns=cols)
使用pd.to_datetime
转换,然后使用.to_period('Q')
转换,然后使用axis=1
进行groupby
df.groupby(pd.to_datetime(df.columns).to_period('Q'), axis=1).sum()
2000Q1 2000Q2 2000Q3 2000Q4 2001Q1 2001Q2 2001Q3
0 3 3 3 3 3 3 2
1 3 3 3 3 3 3 2
2 3 3 3 3 3 3 2
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.