python - 在 Pandas 中按周分组

标签 python pandas date group-by

我有这个数据框:

Name   Date    Quantity
Apple  07/11/17  20
orange 07/14/17  20
Apple  07/14/17  70
Orange 07/25/17  40
Apple  07/20/17  30

我想按 NameDate 聚合它以获得数量的总和 详情:

日期:分组,结果应该是在一周的开始(或者就在星期一)

数量:求和,如果两个或多个记录具有相同的名称和日期(如果落在相同的时间间隔内)

所需的输出如下:

Name   Date    Quantity
Apple  07/10/17  90
orange 07/10/17  20
Apple  07/17/17  30
orange 07/24/17  40

提前致谢

最佳答案

首先,转换列date to_datetime并减去一周,因为我们想要该日期前一周的总和,而不是该日期之前的一周。

然后使用 groupbyGrouperW-MON并聚合 sum:

df['Date'] = pd.to_datetime(df['Date']) - pd.to_timedelta(7, unit='d')
df = df.groupby(['Name', pd.Grouper(key='Date', freq='W-MON')])['Quantity']
    .sum()
    .reset_index()
    .sort_values('Date')
print (df)
  Name       Date  Quantity
0   Apple 2017-07-10        90
3  orange 2017-07-10        20
1   Apple 2017-07-17        30
2  Orange 2017-07-24        40

关于python - 在 Pandas 中按周分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45281297/

相关文章:

Python Selenium 从 url 中抓取丢失的图像

python - 将多个目标文档与多个源文档进行比较

python - 计算数据框中的唯一列表

c# - 如何将日期格式转换为不同的日期格式?

java - 将字符串转换为日期然后格式化日期

python - 用 pandas(dataframe) 中的另一数据覆盖一个数据

python - jupyter 笔记本 : show seaborn plot again

python - 如何使用 pandas 记录跨列是否发生特定更改?

python - Pandas to_excel 在空白电子表格中写入数据框结果 - 如何使用 xlwt 写入 excel?

C# 如何检查今天是否是该月的第一个星期一?