基于时差的熊猫分组

时间:2021-02-26 16:01:22

标签: python pandas dataframe group-by diff

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

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: '>' 在 'Timedelta' 和 'str'

这是数据帧的excert:

enter image description here

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

1 个答案:

答案 0 :(得分:0)

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

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()