我有一個 datafrmae,其中包括兩列 flag 和 flag1,我想檢查標志列值是否大于 1 5 次或大于 5 次連續 flag1 值應更改為 1
here is example
df=pd.DataFrame({'flag':[0,0,1,1,1,1,1,1,1,0,0,0],'flag1':[0,0,0,0,0,0,1,0,0,0,0,0]})
uj5u.com熱心網友回復:
想法是創建連續計數,然后測驗5是否相等:
a = df['flag'].eq(1)
#https://stackoverflow.com/a/52718619/2901002
b = a.cumsum()
df['new'] = b.sub(b.mask(a).ffill().fillna(0)).eq(5).astype(int)
print (df)
flag flag1 new
0 0 0 0
1 0 0 0
2 1 0 0
3 1 0 0
4 1 0 0
5 1 0 0
6 1 1 1
7 1 0 0
8 1 0 0
9 0 0 0
10 0 0 0
11 0 0 0
詳情:
print (b.sub(b.mask(a).ffill().fillna(0)))
0 0.0
1 0.0
2 1.0
3 2.0
4 3.0
5 4.0
6 5.0
7 6.0
8 7.0
9 0.0
10 0.0
11 0.0
Name: flag, dtype: float64
uj5u.com熱心網友回復:
設定
import pandas as pd
df=pd.DataFrame({'flag':[0,0,1,1,1,1,1,1,1,0,0,0],'flag1':[0,0,0,0,0,0,1,0,0,0,0,0]})
解決方案
rolling_sum = df["flag"].rolling(5).sum()
df["check"] = ((rolling_sum == 5) & (rolling_sum.diff() == 1)).astype(int)
flag flag1 check
0 0 0 0
1 0 0 0
2 1 0 0
3 1 0 0
4 1 0 0
5 1 0 0
6 1 1 1
7 1 0 0
8 1 0 0
9 0 0 0
10 0 0 0
11 0 0 0
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/328846.html
標籤:蟒蛇-3.x 熊猫 麻木的 pandas-groupby
上一篇:如何從串列中獲取唯一模式
下一篇:熊貓-與元組合并在列上
