У меня есть фрейм данных с переменной «A», и я хотел бы создать скользящий механизм проверки Nan, чтобы новая переменная «illing_nan »= 1, если ВСЕ 3 (секунды) ячейки (текущая ячейка и две предыдущие) ) имеют значение NaN, иначе "roll_nan" = 0.
Я применяю функцию, поскольку функция .rolling
pandas не поддерживает isna()
. Однако я получаю следующее. Также я не уверен, как включить одно и то же значение строки в средство проверки NaN.
import pandas as pd
import numpy as np
idx = pd.date_range('2018-01-01', periods=10, freq='S')
df = pd.DataFrame({"A":[1,2,3,np.nan,np.nan,np.nan,6,7,8,9]}, index = idx)
df
def isna_func(x):
return 1 if pd.isna(x).all() == True else 0
df['rolling_nan'] = df['A'].rolling(3).apply(isna_func)
df
A rolling_nan
2018-01-01 00:00:00 1.0 NaN
2018-01-01 00:00:01 2.0 NaN
2018-01-01 00:00:02 3.0 0.0
2018-01-01 00:00:03 NaN NaN
2018-01-01 00:00:04 NaN NaN
2018-01-01 00:00:05 NaN NaN
2018-01-01 00:00:06 6.0 NaN
2018-01-01 00:00:07 7.0 NaN
2018-01-01 00:00:08 8.0 0.0
2018-01-01 00:00:09 9.0 0.0
В приведенном выше примере rolling_nan
должен быть равен 1 только на отметке времени 2018-01-01 00:00:05
и 0 в противном случае.