панды - заполнять пустые значения строк условно другими значениями строк - PullRequest
0 голосов
/ 24 августа 2018

У меня есть таблица, которая выглядит следующим образом (столбец отношения был объединен с другой таблицей на основе кодового имени и даты):

date         codename   ratio
2018-01-01   A          .5
2018-02-01   A          
2018-03-01   A          
2018-01-01   B          
2018-02-01   B
2018-01-01   C          .6
2018-02-01   C            
2018-03-01   C          .7
2018-04-01   C

Мне нужно заполнить пустые значения отношения с помощью самое последнее значение с кодовым именем

Вывод должен быть:

date         codename   ratio
2018-01-01   A          .5
2018-02-01   A          .5
2018-03-01   A          .5
2018-01-01   B          
2018-02-01   B
2018-01-01   C          .6
2018-02-01   C          .6  
2018-03-01   C          .7
2018-04-01   C          .7

A получил .5, потому что это его единственное значение.B остается пустым, потому что он не имеет отношения.C получил 0,6 заполненных за февраль, поскольку это было значение января, но это значение апреля составляет 0,7, потому что это было значение марта.

1 Ответ

0 голосов
/ 24 августа 2018

Вы можете использовать .fillna() для заполнения NaN значений, а его аргумент method позволяет заполнять вперед или назад. В этом случае мы хотим сгруппировать по codename, чтобы не заполнять разными именами.

Предполагается, что ваш фрейм данных называется df:

df['ratio'] = df.groupby('codename')['ratio'].fillna(method='ffill')

Должен сделать свое дело. Печать df после этого получает нас:

         date codename  ratio
0  2018-01-01        A    0.5
1  2018-02-01        A    0.5
2  2018-03-01        A    0.5
3  2018-01-01        B    NaN
4  2018-02-01        B    NaN
5  2018-01-01        C    0.6
6  2018-02-01        C    0.6
7  2018-03-01        C    0.7
8  2018-04-01        C    0.7
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...