[英]Find how many consecutive occasions of a column in pandas dataframe with groupby
我有一個 pandas dataframe 看起來像這樣
import pandas as pd
foo = pd.DataFrame({'id': [1,1,1,1,1,2,2,2,2,2],
'col_a': [1,1,0,1,0,1,1,1,0,1],
'col_b': [0,1,1,0,0,0,1,1,1,0]})
我想創建 2 列:
col_a
根據id
有n
1
1
后續出現1
出現2
次后, col_a
有1
, col_b
1
output dataframe 看起來像這樣:對於n=3
foo = pd.DataFrame({'id': [1,1,1,1,1,2,2,2,2,2],
'col_a': [1,1,0,1,0,1,1,1,0,1],
'col_b': [0,1,1,0,0,0,1,1,1,0],
'col_a_consequent': [0,0,0,0,0,1,1,1,0,0],
'col_c': [1,1,1,0,0,1,1,1,1,0]})
對於col_a_consequent
根據這個問題我可以得到我想要的
n = 3
foo_tmp = foo.query('id == 2')
(foo_tmp.col_a.groupby((foo_tmp.col_a != foo_tmp.col_a.shift()).\
cumsum()).transform('size') * foo_tmp.col_a >= n).astype(int)
但我不知道如何對所有id
s 使用groupby
執行相同的操作
有任何想法嗎?
首先你可以使用:
N = 3
foo['col_a_consequent'] = (foo
.groupby(['id', foo['col_a'].ne(foo['col_a'].shift()).cumsum()])
['col_a'].transform('size').ge(N).astype(int)
)
output:
id col_a col_b col_a_consequent2 col_a_consequent3
0 1 1 0 1 0
1 1 1 1 1 0
2 1 0 1 0 0
3 1 1 0 0 0
4 1 0 0 0 0
5 2 1 0 1 1
6 2 1 1 1 1
7 2 1 1 1 1
8 2 0 1 0 0
9 2 1 0 0 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.