Pandas 根据时差分组

Pandas groupby based on time difference

我正在尝试将组号分配给一组内部时差较小的一组线路。为此,我尝试使用:

df["Group_id"] = df.groupby("DEVICE")["DATE_EVT"].diff().gt('0 days 00:00:60').cumsum()

但是,diff 为组中的每个第一个元素创建 nan 值,这有时会导致两个连续组之间的合并。为了用一些大的值填充 nan 值,我尝试使用:

df["Group_id"] = df.groupby("DEVICE")["DATE_EVT"].diff().fillna('10 days 00:00:00.000000').gt('0 days 00:00:60').cumsum()

但我收到一条错误消息:

TypeError: '>' not supported between instances of 'Timedelta' and 'str'

这是数据框的摘录:

组 12877 应该在 DEV1 结束时结束,因为有一个 groupby DEVICE。

将两个字段转换为时间增量已解决问题:

df["Group_id"] = df.groupby("DEVICE")["DATE_EVT"].diff().fillna(pd.Timedelta('10 days 00:00:00.000000')).gt(pd.Timedelta('0 days 00:00:60')).cumsum()