Есть ли способ Pythoni c для того, чтобы в кадре данных временных рядов, по столбцу, go вниз и выбрать первое число в последовательности, а затем pu sh переслать его до следующего NaN, а затем принять следующее число, отличное от NaN, и pu sh, то есть до следующего NaN, и т. д. (сохранение индексов и NaN).
Например, я хотел бы преобразовать этот кадр данных:
DF = pd.DataFrame(data={'A':[np.nan,1,3,5,7,np.nan,2,4,6,np.nan], 'B':[8,6,4,np.nan,np.nan,9,7,3,np.nan,3], 'C':[np.nan,np.nan,4,2,6,np.nan,1,5,2,8]})
A B C
0 NaN 8.0 NaN
1 1.0 6.0 NaN
2 3.0 4.0 4.0
3 5.0 NaN 2.0
4 7.0 NaN 6.0
5 NaN 9.0 NaN
6 2.0 7.0 1.0
7 4.0 3.0 5.0
8 6.0 NaN 2.0
9 NaN 3.0 8.0
К этому фрейму данных:
Result = pd.DataFrame(data={'A':[np.nan,1,1,1,1,np.nan,2,2,2,np.nan], 'B':[8,8,8,np.nan,np.nan,9,9,9,np.nan,3], 'C':[np.nan,np.nan,4,4,4,np.nan,1,1,1,1]})
A B C
0 NaN 8.0 NaN
1 1.0 8.0 NaN
2 1.0 8.0 4.0
3 1.0 NaN 4.0
4 1.0 NaN 4.0
5 NaN 9.0 NaN
6 2.0 9.0 1.0
7 2.0 9.0 1.0
8 2.0 NaN 1.0
9 NaN 3.0 1.0
Я знаю, что могу использовать al oop, чтобы перебрать столбцы, чтобы сделать это, но был бы признателен за помощь в том, как сделать это более эффективным способом Pythoni c на очень большом фрейме данных. Спасибо.