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()
我正在尝试将组号分配给一组内部时差较小的一组线路。为此,我尝试使用:
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()