Pandas如何获得连续日期和销售额超过1000的行?

2024-03-28 14:33:21 发布

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

我有一个名为df的数据帧:

Date        Sales
01/01/2020    812
02/01/2020    981
03/01/2020    923
04/01/2020   1033
05/01/2020    988
...           ...

如何获得销售额超过1000的连续7天的首次出现

这就是我所做的,以查找销售额超过1000的行:

In  [221]:  df.loc[df["sales"] >= 1000]
Out [221]: 
Date        Sales
04/01/2020   1033
08/01/2020   1008
09/01/2020   1091
17/01/2020   1080
18/01/2020   1121
19/01/2020   1098
...           ...

Tags: 数据indfdateoutlocsales销售额
2条回答

你就不能按日期排序然后抓取头7吗

df = df.sort_values('Date')
df.loc[df["sales"] >= 1000].head(7)

如果你需要原件,可以先复印一份

您可以为每个连续的天数分配一个唯一标识符,按天数分组,并返回每个组的第一个值(使用以前的值过滤器>;1000):

df = df.query('Sales > 1000').copy()
df['grp_date'] = df.Date.diff().dt.days.fillna(1).ne(1).cumsum()
df.groupby('grp_date').head(7).reset_index(drop=True)

其中,您可以将head参数的值从连续的几天更改为第一行n

注意:您可能需要使用pd.to_datetime(df.Date, format='%d/%m/%Y')将日期从字符串转换为日期时间,并对其进行排序

相关问题 更多 >