【问题标题】:Pandas : How to avoid fillna while resampling from hourly to daily dataPandas:从每小时到每天的数据重新采样时如何避免填充
【发布时间】:2019-08-31 19:33:43
【问题描述】:

我有一个包含每小时数据的系列。我想计算每日总和。 数据可能缺少小时数,有时还缺少日期。

2017-02-01 00:00:00  3.0
2017-02-01 01:00:00  4.0
2017-02-01 02:00:00  4.0
2017-02-03 00:00:00  3.0

例如,在上述 2017 年 2 月 1 日的时间序列中,仅存在前三个小时的数据。剩下的 21 小时数据丢失。

2017-02-02 的数据完全缺失。

  1. 我不在乎错过时间。每日总和应该考虑一天中存在的任何数据(在示例中,它应该考虑小时 0、1、2)。
  2. 但是,如果某个日期完全丢失,我应该将 NaN 作为该日期的总和。

resample() 后跟 sum() 适用于 #1。但它为#2 返回 0。

2017-02-01  110.0
2017-02-02  0.0
2017-02-03  3.0

这是虚拟代码:

my_series.resample('1D',closed='left',label='left').sum()

如何告诉 resample(),不要将缺失日期设置为 0?

【问题讨论】:

    标签: python pandas time-series


    【解决方案1】:

    sum 中使用min_count=1

    min_count:整数,默认为 0
    执行操作所需的有效值数。如果存在的非 NA 值少于 min_count,则结果将为 NA。

    0.22.0 版中的新增功能:添加了默认值为 0。这意味着全 NA 或空系列的总和为 0,而全 NA 或空系列的乘积为 1。

    a = my_series.resample('1D',closed='left',label='left').sum(min_count=1)
    print (a)
    2017-02-01    11.0
    2017-02-02     NaN
    2017-02-03     3.0
    Freq: D, Name: a, dtype: float64
    

    【讨论】:

    猜你喜欢
    • 2020-09-19
    • 2018-08-26
    • 2023-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-15
    • 2019-06-14
    • 1970-01-01
    相关资源
    最近更新 更多