我有三列,t
,b
和h
一個數據幀:棘手幀內列邏輯
t b h
0 NaN False 6
1 6.023448 False 38
2 12.996233 False 46
3 2.484907 False 67
4 5.062595 False 81
5 4.624973 False 82
6 3.367296 False 38
7 3.688879 False 53
8 6.926577 True 38
9 14.972346 False 81
10 14.442651 False 78
11 3.367296 False 67
12 5.236442 False 46
13 5.298317 True 8
,我想以生成用於傳播的h
每個實例的值的新列其中b==True
倒退,並且只能達到下一個這樣的實例或第一次出現t>9.5
。其餘的充滿了NaN
的。這裏是我需要的輸出的一個例子:
t b h i
0 NaN False 6 NaN
1 6.023448 False 38 NaN
2 12.996233 False 46 38
3 2.484907 False 67 38
4 5.062595 False 81 38
5 4.624973 False 82 38
6 3.367296 False 38 38
7 3.688879 False 53 38
8 6.926577 True 38 38
9 14.972346 False 81 NaN
10 14.442651 False 78 8
11 3.367296 False 67 8
12 5.236442 False 46 8
13 5.298317 True 8 8
我想避免遍歷行,因爲我有他們的數以百萬計。我嘗試使用bfill選項獲得b==True
實例where
,然後fillna
帶有bfill選項,但無法告訴他何時開始填充。此外,這將是apply
「ED個別基團的groupby
內,所以我需要的功能,增加了一列到它的參數,並返回到整個幀
def get_i(x):
x['i']=x['h'].where(x['b']==True).fillna(value=None,method='backfill').dropna()
return x
很好的解決方案! – MaxU
美觀大方 –
謝謝你的接受。 – jezrael