【问题标题】:Pandas groupby based on time differencePandas groupby 基于时差
【发布时间】:2021-05-29 00:35:42
【问题描述】:

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

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'

这是数据框的摘录:

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

【问题讨论】:

  • 试试_.gt(pd.Timedelta('0 days 00:00:60')).cumsum()

标签: python pandas dataframe group-by diff


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2019-04-10
    • 2020-07-31
    • 1970-01-01
    • 2017-04-11
    • 2014-07-04
    • 2021-11-19
    相关资源
    最近更新 更多