python - 我想对列名进行分组并将它们的值添加到 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 值的总和。ETC...
现在我正在使用嵌套循环来执行此操作,这非常低效且缓慢。知道如何使这更有效和更短吗?
解决方案
设置
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
用then和.to_period('Q')
then转换groupby
axis=1
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
推荐阅读
- javascript - {{}} 我在 html 脚本标签中找到了这个
- mysql - 如何在 2 个表中进行计数
- spring-cloud-dataflow - 自定义处理器流程的 Http 引发 org.springframework.expression.spel.SpelEvaluationException: EL1004E
- wso2 - 如何通过 WSO2-API 管理器传递 CKAN API 授权令牌
- android - 如何从firestore中的数组数据字段中获取数据?
- php - php替换字符串中的id元素内容
- apache-kafka - 在 Kafka 流连接中,第二个加入字段会进入队列等待第一个字段加入窗口吗?
- kubernetes - Kubernetes 上的 JupyterHub:创建错误:禁止使用 pod“hub-b564f4485-”:无法针对任何 pod 安全策略进行验证:[]
- jsf - 阿拉伯语显示为 ???? ???在控制台和 MySQL 中
- laravel - 外键约束的格式不正确。如何正确修复?