我正在嘗試使用 np.where 來計算超過一定長度的連續非 NaN 值,如下所示:
例如,如果有超過 3 個連續的非 NaN 值,則回傳 True。
將不勝感激任何幫助!
| 價值 | 連續的 |
|---|---|
| 南 | 錯誤的 |
| 南 | 錯誤的 |
| 1 | 錯誤的 |
| 1 | 錯誤的 |
| 南 | 錯誤的 |
| 4 | 真的 |
| 2 | 真的 |
| 3 | 真的 |
| 南 | 錯誤的 |
| 南 | 錯誤的 |
| 1 | 真的 |
| 3 | 真的 |
| 3 | 真的 |
| 5 | 真的 |
uj5u.com熱心網友回復:
這個想法是通過測驗缺失值和映射來創建組,使用Series.mapwithSeries.value_counts來只使用由倒置掩碼過濾的非 NaN 行~m:
#convert values to numeric
df['value'] = df['value'].astype(float)
m = df['value'].isna()
s = m.cumsum()
N = 3
df['new'] = s.map(s[~m].value_counts()).ge(N) & ~m
print (df)
value consecutive new
0 NaN False False
1 NaN False False
2 1.0 False False
3 1.0 False False
4 NaN False False
5 4.0 True True
6 2.0 True True
7 3.0 True True
8 NaN False False
9 NaN False False
10 1.0 True True
11 3.0 True True
12 3.0 True True
13 5.0 True True
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/361979.html
