我正在尝试将组号分配给一组内时差很小的一组行。为此,我尝试使用:
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:
当 DEV1 结束时,组 12877 应该结束,因为有一个 groupby DEVICE。
答案 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()