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

我有一个名为的数据框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
...           ...

回答

您可以每连续几天分配一个唯一标识符,按它们分组,并返回每组的第一个值(先前过滤的值大于 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')将日期从字符串转换为熊猫日期时间,并对它们进行排序。


以上是Pandas如何获取连续日期和销售额超过1000的行?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>