Python 在数据帧中查找事件的每个id的连续天数
这是我的数据框:Python 在数据帧中查找事件的每个id的连续天数,python,pandas,Python,Pandas,这是我的数据框: employeeid eventid event_date 1 1 2020-11-01 1 1 2020-11-02 1 0 2020-11-02 1 1 2020-11-03 1 1 2020-11-04 1 1 2020-11-05 1 1 2020-11-06 2
employeeid eventid event_date
1 1 2020-11-01
1 1 2020-11-02
1 0 2020-11-02
1 1 2020-11-03
1 1 2020-11-04
1 1 2020-11-05
1 1 2020-11-06
2 1 2020-11-01
2 1 2020-11-02
2 0 2020-11-02
3 1 2020-11-01
3 1 2020-11-02
3 1 2020-11-03
我想找出事件1中每个驱动程序的连续天数
输出必须是:
employeeid eventid start_date consecutive_days
1 1 2020-11-01 2
1 1 2020-11-03 4
2 1 2020-11-01 2
3 1 2020-11-01 3
我用cumsum()做了一些尝试,但没有成功
如何执行此操作?首先为
1和每个组的连续天数创建组,在中筛选DataFrame
,然后使用命名聚合进行聚合:
m1 = df['eventid'].ne(1)
m2 = df.groupby('employeeid')['event_date'].diff().dt.days.fillna(1).ne(1)
m = (m1 & m2)
df['g'] = m.cumsum()
df = df[~m]
df = (df.groupby(['employeeid', 'g']).agg(start_date = ('event_date', 'first'),
consecutive_days = ('event_date', 'size'))
.reset_index(level=1, drop=True)
.reset_index())