Python 在timeseries中的第一条记录上,缺少的数据返回NaN

Python 在timeseries中的第一条记录上,缺少的数据返回NaN,python,numpy,pandas,dataframe,Python,Numpy,Pandas,Dataframe,在0.14.1中,diff()不会在时间序列的开头生成值 使用diff()处理缺失数据的方式似乎与cumsum()不同,后者假定NaN==0。我想知道是否有一种方法可以使diff()对以前丢失的数据假定为0(丢失是因为它在时间序列开始之前) 例如: >print df 2014-05-01 A Apple 1 B Banana 2 2014-06-01 A Apple

在0.14.1中,diff()不会在时间序列的开头生成值

使用diff()处理缺失数据的方式似乎与cumsum()不同,后者假定NaN==0。我想知道是否有一种方法可以使diff()对以前丢失的数据假定为0(丢失是因为它在时间序列开始之前)

例如:

    >print df

    2014-05-01  A     Apple        1
                B     Banana       2
    2014-06-01  A     Apple        3
                B     Banana       4
结果:

    >print df.groupby(level=[1,2]).diff()

    2014-05-01  A     Apple        NaN
                B     Banana       NaN
    2014-06-01  A     Apple        2
                B     Banana       2
当所需输出为:

    2014-05-01  A     Apple        1
                B     Banana       2
    2014-06-01  A     Apple        2
                B     Banana       2

据我所知,
groupby(…).diff()
只调用
np.diff
,它总是返回比传递给它的数组短1(或n)

但是,仅仅填充缺失的数据应该很容易。像这样的

In [175]: df
Out[175]: 
                     d
a          b c        
2014-05-01 A Apple   1
           B Banana  2
2014-06-01 A Apple   3
           B Banana  4

In [176]: df['diff'] = df.groupby(level=[1,2])['d'].diff()

In [177]: df['diff'] = df['diff'].fillna(df['d'])

In [178]: df
Out[178]: 
                     d  diff
a          b c              
2014-05-01 A Apple   1     1
           B Banana  2     2
2014-06-01 A Apple   3     2
           B Banana  4     2

工作起来很有魅力。帽子脱了。