Фрейм данных временных рядов месячной частоты, заполнить NaN конкретными значениями - PullRequest
0 голосов
/ 04 октября 2018

Как передать значения в месяцы с апреля по сентябрь.Я бы хотел, чтобы апрельское значение равнялось 42000, май = 41000, июнь = 61200, июль = 71000, август = 71000

df.index
RangeIndex(start=0, stop=60, step=1)

enter image description here

Ответы [ 2 ]

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

Для такого сопоставления вы обычно определяете словарь и отображаете значения.Используйте .split, чтобы получить месячную часть даты, и fillna, чтобы заполнить только пропущенные значения.

Данные:

import pandas as pd
import numpy as np
df = pd.DataFrame({'Date': ['2018-Jan', '2018-Feb', '2018-Mar', '2018-Apr', '2018-May',
                            '2018-Jun', '2018-Jul', '2018-Aug', '2018-Sep'],
                   'Value': [75267.169, 42258.868, 43793]+[np.NaN]*6})

Код:

d = {'Apr': 42000, 'May': 41000, 'Jun': 61200, 'Jul': 71000, 'Aug': 71000}
df['Value'] = df.Value.fillna(df.Date.str.split('-').str[1].map(d))

Вывод:

       Date      Value
0  2018-Jan  75267.169
1  2018-Feb  42258.868
2  2018-Mar  43793.000
3  2018-Apr  42000.000
4  2018-May  41000.000
5  2018-Jun  61200.000
6  2018-Jul  71000.000
7  2018-Aug  71000.000
8  2018-Sep        NaN
0 голосов
/ 04 октября 2018

супер простой и уродливый способ сделать это, используя pd.DataFrame.iloc

to_fill = [42000,41000,61200,71000,71000]    
df.iloc[54:59,1] = to_fill
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...