Панды: заполнение ячеек (method = 'pad') списка DataFrame - PullRequest
0 голосов
/ 27 октября 2018

По сути, я пытаюсь сделать что-то вроде это , но за fillna вместо суммы.

У меня есть список df, каждый с одинаковыми столбцами / индексами, упорядоченный по времени:

import numpy as np
import pandas as pd
np.random.seed(0)

df_list = []
for index in range(3):
    a  = pd.DataFrame(np.random.randint(3, size=(5,3)), columns=list('abc'))
    mask = np.random.choice([True, False], size=a.shape)
    df_list.append(a.mask(mask))

Теперь я хочу заменить numpy.nan ячейки DataFrame в df_list по значению той же ячейки в i-1 th DataFrame в df_list.

, поэтому, если первый DataFrame:

     a    b    c
 0  NaN  1.0  0.0
 1  1.0  1.0  NaN
 2  0.0  NaN  0.0
 3  NaN  0.0  2.0
 4  NaN  2.0  2.0

и 2-е:

     a    b    c
 0  0.0  NaN  NaN
 1  NaN  NaN  NaN
 2  0.0  1.0  NaN
 3  NaN  NaN  2.0
 4  0.0  NaN  2.0

Тогда выходные данные output_list должны быть списком той же длины, что и df_list, и иметь также DataFrames в качестве элементов.

Первая запись output_list совпадает с первой записью df_list. Вторая запись output_list:

     a    b    c
 0  0.0  1.0  0.0
 1  1.0  1.0  NaN
 2  0.0  1.0  0.0
 3  NaN  0.0  2.0
 4  0.0  2.0  2.0

1 Ответ

0 голосов
/ 27 октября 2018

Я считаю, что функциональность update очень хороша для этого, см. Документы: https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.update.html
Это метод, который позволяет вам обновлять DataFrame, в вашем случае только его NaN-элементы.

В частности, вы можете использовать его так:

new_df_list = df_list[:1]
for df_new, df_old  in zip(df_list[1:], df_list[:-1]):
    df_new.update(df_old, overwrite=False)
    new_df_list.append(df_new)

Что даст вам желаемый результат

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...