每月频率时间序列数据帧,用特定值填充NaN

时间:2018-10-04 15:35:36

标签: pandas

如何将值传递给从四月到九月的几个月。 我希望四月值等于42000,五月= 41000,六月= 61200,七月= 71000,八月= 71000

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

enter image description here

2 个答案:

答案 0 :(得分:0)

使用pd.DataFrame.iloc

的超级简单且丑陋的方法
to_fill = [42000,41000,61200,71000,71000]    
df.iloc[54:59,1] = to_fill

答案 1 :(得分:0)

对于这样的映射,通常会定义一个字典并映射值。使用.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