[英]How to get the maximum value of a continuous condition being true?
TRUE_MAX
列是如何計算的?
輸入:
import pandas as pd
A=[28,30,15,25,24,13,31,19,20,11,19,21]
COND=[False,True,True,True,False,False,True,True,True,False,True,True]
df=pd.DataFrame({'A':A,'COND':COND})
預計 Output
A COND TRUE_MAX
0 28 FALSE
1 30 TRUE 30
2 15 TRUE 30
3 25 TRUE 30
4 24 FALSE
5 13 FALSE
6 31 TRUE 31
7 19 TRUE 31
8 20 TRUE 31
9 11 FALSE
10 19 TRUE 21
11 21 TRUE 21
您可以嘗試如下:
import pandas as pd
A=[28,30,15,25,24,13,31,19,20,11,19,21]
COND=[False,True,True,True,False,False,True,True,True,False,True,True]
df=pd.DataFrame({'A':A,'COND':COND})
# splitting your data in groups: 1 through to 6
sequences = (df.COND != df.COND.shift()).cumsum()
# use only groups where df.COND == True and for each group get max in df.A
max_vals = df[df.COND].groupby(sequences)['A'].transform(max)
# assign to orig df
df['TRUE_MAX'] = max_vals
print(df)
A COND TRUE_MAX
0 28 False NaN
1 30 True 30.0
2 15 True 30.0
3 25 True 30.0
4 24 False NaN
5 13 False NaN
6 31 True 31.0
7 19 True 31.0
8 20 True 31.0
9 11 False NaN
10 19 True 21.0
11 21 True 21.0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.