微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – Pandas Diff()在时间序列的第一个记录中,缺少数据返回NaN

在Pandas 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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐