gpt4 book ai didi

python - Pandas Dataframe 检查 id 是否在时间间隔内出现超过 1

转载 作者:太空宇宙 更新时间:2023-11-04 02:18:42 25 4
gpt4 key购买 nike

下午好,假设我有这个数据框。

id  event_date  event_type
1 8/5/2018 1
2 8/5/2018 1
3 8/7/2018 1
1 8/10/2018 1
3 8/14/2018 1
2 8/16/2018 1
1 8/19/2018 1
3 8/28/2018 1

我想检查一个 ID 在 10 天的时间范围内是否出现超过一次。

我可以得到id出现了多少次

counts = df['id'].value_counts()

df[df['id'].isin(counts.index[counts > 1])]

但我坚持只在进入时间范围时的部分。

在这种情况下,我只需要得到

id times
1 2
3 1

提前致谢

最佳答案

id 上使用 could groupby 并获取小于 10 天的 event_date 差异,然后对实例进行求和 .

In [442]: (df.groupby('id')['event_date'].diff().dt.days.lt(10)
.groupby(df['id']).sum()
.reset_index(name='times'))
Out[442]:
id times
0 1 2.0
1 2 0.0
2 3 1.0

详细信息

In [445]: df.groupby('id')['event_date'].diff()
Out[445]:
0 NaT
1 NaT
2 NaT
3 5 days
4 7 days
5 11 days
6 9 days
7 14 days
Name: event_date, dtype: timedelta64[ns]

In [446]: df.groupby('id')['event_date'].diff().dt.days
Out[446]:
0 NaN
1 NaN
2 NaN
3 5.0
4 7.0
5 11.0
6 9.0
7 14.0
Name: event_date, dtype: float64

In [447]: df.groupby('id')['event_date'].diff().dt.days.lt(10)
Out[447]:
0 False
1 False
2 False
3 True
4 True
5 False
6 True
7 False
Name: event_date, dtype: bool

In [448]: df.groupby('id')['event_date'].diff().dt.days.lt(10).groupby(df.id).sum()
Out[448]:
id
1 2.0
2 0.0
3 1.0
Name: event_date, dtype: float64

关于python - Pandas Dataframe 检查 id 是否在时间间隔内出现超过 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52082342/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com