[英]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.