【发布时间】:2021-11-07 00:51:23
【问题描述】:
我有 3 列的数据:日期、ID、销售额。 我的第一个任务是过滤超过 100 的销售额。我做到了。 第二个任务,按连续天数对 id 进行分组。
| index | date | id | sales |
|---|---|---|---|
| 0 | 01/01/2018 | 03 | 101 |
| 1 | 01/01/2018 | 07 | 178 |
| 2 | 02/01/2018 | 03 | 120 |
| 3 | 03/01/2018 | 03 | 150 |
| 4 | 05/01/2018 | 07 | 205 |
结果应该是:
| index | id | count |
|---|---|---|
| 0 | 03 | 3 |
| 1 | 07 | 1 |
| 2 | 07 | 1 |
我需要在不使用 pandas/dataframe 的情况下完成这项任务,但现在我无法想象从哪方面攻击这个问题。 只是为了努力,我在这里尝试了解决方案的建议count consecutive days python dataframe 但 id 没有分组。 这是我的代码:
data = df[df['sales'] >= 100]
data['date'] = pd.to_datetime(data['date']).dt.date
s = data.groupby('id').date.diff().dt.days.ne(1).cumsum()
new_frame = data.groupby(['id', s]).size().reset_index(level=0, drop=True)
“new_frame”将具有“count”列是非常重要的,因为在我需要按“count”列中的那些计数天数的范围计算 id 之后。例如id 的计数在 0-7 天、7-12 天等范围内,但这不是我的问题的一部分。 非常感谢
【问题讨论】:
标签: python pandas list dataframe grouping