如何使用Pandas按周分组(星期四开始)?

2024-04-27 14:50:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据框架,其中包含每天获得的用户数量。数据帧:

users = {'Date':['13.02.2020', '15.02.2020', '19.02.2020', '20.02.2020', '23.02.2020', '26.02.2020'], 'Users_gain':['2', '1', '3', '1', '4', '5']}
df_users = pd.DataFrame(users)

Date    Users_gain
0   13.02.2020  2
1   15.02.2020  1
2   19.02.2020  3
3   20.02.2020  1
4   23.02.2020  4
5   26.02.2020  5

我需要按周分组,开始日是星期四。所以结果应该是这样的:

Date    Users_gain
0   13.02.2020 - 19.02.2020 6
1   20.02.2020 - 26.02.2020 10

如果有人能帮我解决这个问题,我将不胜感激

这就是我试过的。但我不知道如何将开始日期从周日改为周四:

df_users.groupby(pd.Grouper(key='Date', freq='W')).sum()

Tags: 数据key框架dataframedfdateuserspd
1条回答
网友
1楼 · 发布于 2024-04-27 14:50:39

首先通过^{}将列转换为数字和日期时间:

df_users['Users_gain'] = df_users['Users_gain'].astype(int)
df_users['Date'] = pd.to_datetime(df_users['Date'], format='%d.%m.%Y')

然后按^{}或按天Wednesday^{}聚合:

df_users = df_users.resample('W-Wed',on='Date')['Users_gain'].sum().reset_index()
#alternative
#df_users = df_users.groupby(pd.Grouper(key='Date', freq='W-Wed')).sum().reset_index()

日期时间的最后更改格式,减去6天和^{}

s = (df_users['Date'] - pd.offsets.DateOffset(days=6)).dt.strftime('%d.%m.%Y-')
df_users['Date'] = s + df_users['Date'].dt.strftime('%d.%m.%Y')

print (df_users)
                    Date  Users_gain
0  13.02.2020-19.02.2020           6
1  20.02.2020-26.02.2020          10

相关问题 更多 >