簡體   English   中英

計算Python中的事件數

[英]Count the number of events in Python

在繼續之前的問題時,我需要更多幫助。

數據框就像

time eve_id  sub_id   flag
0      5      2        0
1      5      2        0
2      5      2        1
3      5      2        1
4      5      2        0
5      4      25       0
6      4     30        0
7      5      2        1

我需要將時間標記中的eve_id計數為0到1,並將時間標記中的eve_id計數為1到1

輸出將如下所示

time   flag  count
0       0      2
2       1      2
4       0      3

有人可以幫我嗎?

首先,我們創建一個分組器指示器,該指示器檢查兩行之間的difference是否not equal 0,這表明存在差異。

然后,我們根據該指標分組並使用agg pandas 0.25.0我們named aggregations

s = df['flag'].diff().ne(0).cumsum()

grpd = df.groupby(s).agg(time=('time', 'first'),
                         flag=('flag', 'first'),
                         count=('flag', 'size')).reset_index(drop=True)

輸出量

   time  flag  count
0     0     0      2
1     2     1      2
2     4     0      3
3     7     1      1

如果time是您的索引,請使用:

grpd = df.assign(time=df.index).groupby(s).agg(time=('time', 'first'),
                                               flag=('flag', 'first'),
                                               count=('flag', 'size')).reset_index(drop=True)

注意:額外的行是因為最后一行和之前的行之間也有差異

將匯總函數sum更改為GroupBy.size

df1 = (df.groupby([df['flag'].ne(df['flag'].shift()).cumsum(), 'flag'])
         .size()
         .reset_index(level=0, drop=True)
         .reset_index(name='count'))
print (df1)
   flag  count
0     0      2
1     1      2
2     0      3
3     1      1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM