Заполнение значений столбца временного ряда последним известным значением - PullRequest
0 голосов
/ 18 июня 2020

У меня есть Pandas фрейм данных временного ряда вроде этого:

id .. .. ..(some cols) 1/1/20 1/2/20 1/3/20 1/4/20 1/5/20 1/6/20 ....
1                      10     20     0      40     0      50
2                      10     30     30     0      0      50
.
.

Я хочу ffill 0 в столбцах с последним известным значением, чтобы получить что-то вроде этого:

id .. .. ..(some cols) 1/1/20 1/2/20 1/3/20 1/4/20 1/5/20 1/6/20 ....
1                      10     20     20     40     40      50
2                      10     30     30     30     30      50
.
.

Предполагая, что между id и столбцами временного ряда есть другие столбцы, как мне ffill сделать такой фрейм данных? Я знаю, что что-то вроде df.ffill(axis = 1) работает для значений Null, но я не смог найти ничего, чтобы изменить его для работы с 0.

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Может быть, мое решение может быть немного наивным, но вы можете преобразовать интересующие вас значения в nan, а затем использовать метод fillna . Вот так:

import pandas as pd
import numpy as np

df = pd.DataFrame(dict(col1=[1,2,3,4,5],col2=[3,0,3,5,0],col3=[0,2,0,0,1]))
df[df==0]=np.nan
df.fillna(method='ffill',axis=1)
1 голос
/ 18 июня 2020

Вы можете сделать ffill с mask и update

df.update(df.filter(like='/').mask(lambda x : x==0).ffill(1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...