python - 每月汇总值后创建新数据框
问题描述
我有一个数据框,其中包含多年期间每天的交易。我想将此 df 转换为 df_monthly ,其中每一行包含给定月份的交易总和,从 2019 年 1 月(1 月)到 2020 年 2 月 2 日排列。
假设这是我的df:
df = pd.DataFrame([['2019-01-01', 11, 82],
['2019--01-02', 3, 98],
['2019-02-01', 1, 3],
['2019-02-02', 47, 79],
['2020-01-01', 56, 48],
['2020-02-02', 8, 2]], columns=['date', 'col1', 'col2'])
df['date'] = pd.to_datetime(df['date'])
df.set_index('date', inplace=True)
df
col1 col2
date
2019-01-01 11 82
2019-01-02 3 98
2019-02-01 1 3
2019-02-02 47 79
2020-01-01 56 48
2020-02-02 8 2
我试过这个
df['month'] = df.index.month
df['year'] = df.index.year
df_monthly = df.groupby(['month', 'year']).sum()
输出:
col1 col2
month year
1 2019 14 180
2020 56 48
2 2019 48 82
2020 8 2
我想要的是这样的:
year month col1 col2
0 2019 1 14 180
1 2019 2 48 82
2 2020 1 56 48
3 2020 2 8 2
你有什么建议吗?
谢谢!
解决方案
可以使用'groupby'。
df.groupby(['year','month']).agg(sum).reset_index()
year month col1 col2
0 2019 1 14 180
1 2019 2 48 82
2 2020 1 56 48
3 2020 2 8 2
推荐阅读
- javascript - 为什么我不能在 JavaScript 中更改对象属性
- c - 我需要检查输入是否是 IF 语句中的数字
- php - 如何在 Laravel 项目中构建 Vue.js 实例?
- firebase - 使用模块捆绑器和动态配置 firebase
- php - API 平台 - 发布/放置具有关系的实体
- matlab - 如何在具有离散属性的 Matlab 中使用 fitcnb(朴素贝叶斯)?
- python - 使用颤振和漂亮的汤来刮擦颤振和飞镖
- javascript - 如何从承诺主体外部访问承诺结果
- python - 如何在 pygame 中改进我对 3d 空间的模拟?
- python - python,chrome驱动程序错误