pandas - 结合 groupby 和 resample
问题描述
我想计算每周的总和
df = pd.DataFrame({'id':['x1', 'x1', 'x1', 'x1', 'x2', 'x2', 'x2', 'x2']
, 'date':['2021-01-01','2021-01-02',
'2021-01-03','2021-01-04','2021-01-05',
'2021-01-06','2021-01-07','2021-01-08'],
'revenue':[5,3,2,
10,12,2,
1,0]})
df["date"] = pd.to_datetime(df['date'])
预期输出:
2020-12-28 x1. 10
2021-01-04 x1. 10
2021-01-04. x2. 15
我做了
df.groupby('id', 'date')["revenue"].resample('W-Mon', on='date', closed='left', label='left').sum()
解决方案
不是很清楚你正在寻找的输出。
解决方案:
df.groupby('id').resample('W-Mon', on='date').sum().reset_index()
如果我们想通过 id 获得每周(星期一)的收入总和,我们可以使用上面的代码。
输出:
id date revenue
0 x1 2021-01-04 20
1 x2 2021-01-11 15
编辑:
对于预期输出:
id date revenue
0 x1 2020-12-28 10
1 x1 2021-01-04 10
2 x2 2021-01-04 15
解决方案
df = df.groupby('id').resample('W', on='date').sum().reset_index()
df['date'] = df.date - pd.Timedelta('6D')
df
单线解决方案
df.groupby('id').resample('W-Mon', on='date', closed='left', label='left').sum().reset_index()
推荐阅读
- jquery - 我在加载或滚动到元素时尝试取消隐藏元素有什么问题?
- robotframework - 如何设置全局变量来保存资源文件的路径?
- python - 是否可以使用 str.extract 提取熊猫中的所有行?
- paypal - Paypal 重定向到 https://www.paypal.com/webapps/hermes?token=
- c# - 在 C# 的 Vector.Diagnostics(用于 CANoe)程序集中使用 Request 和 Ecu 类
- linux - 在 gdb 中调用 malloc 时出现负数
- java - MalformedJsonException:第 1 行第 343 列路径 $.nickname 的意外值
- facebook - 使用我网站中的共享按钮,从我的帐户登录到其他页面上的 facebook 共享
- javascript - 画布在 iOS 移动设备上无法正常工作
- bash - bash 脚本中的“`$@': not a valid identifier”错误