【问题标题】:Pandas group by event id and relative time bins of each event?Pandas 按每个事件的事件 ID 和相对时间段分组?
【发布时间】:2022-06-29 22:57:39
【问题描述】:

我想知道根据事件的持续时间将我的数据分组到事件中并将每个事件分为 4 个 bin 并计算每个 bin 中的实例的最快方法。
我的数据如下所示:

time    eventID    value
0:30     1          a
0:30     1          b
0:30     1          c
4:00     1          d
1:00     2          a
2:00     2          b
3:00     2          c
4:00     2          d
5:00     2          e
6:00     2          f
7:00     2          g
8:00     2          h

输出应该是这样的:

event    bin    count
1        1       3
1        2       0
1        3       0
1        4       1
2        1       2
2        2       2
2        3       2
2        4       2

而且垃圾箱的数量和时间也可能不同。

【问题讨论】:

  • 您能否发布一下,到目前为止您为解决问题所做的尝试?

标签: python pandas dataframe pandas-groupby


【解决方案1】:

IIUC,您可以使用 pandas.cut 计算自定义 bin,然后将其用于 GroupBy.count

N = 4
bins = df.groupby('eventID')['time'].apply(lambda d: pd.cut(pd.to_timedelta(d+':00'),
                                                            bins=N, labels=range(1, N+1)))

df.groupby(['eventID', bins.rename('bin')])['value'].count().reset_index()

输出:

   eventID bin  value
0        1   1      3
1        1   2      0
2        1   3      0
3        1   4      1
4        2   1      2
5        2   2      2
6        2   3      2
7        2   4      2

【讨论】:

    猜你喜欢
    • 2018-12-17
    • 1970-01-01
    • 2022-12-20
    • 2018-10-14
    • 2020-05-26
    • 1970-01-01
    • 1970-01-01
    • 2018-04-10
    • 2014-03-30
    相关资源
    最近更新 更多