Pandas重新采样以在所有值都为NaN时返回NaN



我使用重采样将数据汇总为每小时一次的块。当小时的所有输入数据都是NaN时,重新采样将产生一个值0,而不是NaN。

我的原始数据是:

infile
Out[206]:
Date_time  Rainfall
0  2019-02-02 14:18:00       NaN
1  2019-02-02 14:20:00       NaN
2  2019-02-02 14:25:00       NaN
3  2019-02-02 14:30:00       NaN
4  2019-02-02 14:35:00       NaN
5  2019-02-02 14:40:00       NaN
6  2019-02-02 14:45:00       NaN
7  2019-02-02 14:50:00       NaN
8  2019-02-02 14:55:00       NaN
9  2019-02-02 15:00:00       0.0
10 2019-02-02 15:05:00       NaN
11 2019-02-02 15:10:00       NaN
12 2019-02-02 15:15:00       NaN
13 2019-02-02 15:20:00       NaN
14 2019-02-02 15:25:00       NaN
15 2019-02-02 15:30:00       NaN
16 2019-02-02 15:35:00       NaN
17 2019-02-02 15:40:00       NaN
18 2019-02-02 15:45:00       NaN
19 2019-02-02 15:50:00       NaN
20 2019-02-02 15:55:00       NaN

我希望我的输出是这样的:

Date_time  Rainfall  
0  2019-02-02 14:18:00       NaN
1  2019-02-02 15:00:00       0.0

但我得到的却是:

output[['Date_time', 'Rainfall']]
Out[208]: 
Date_time  Rainfall
0     2019-02-02 14:18:00       0.0
1     2019-02-02 15:00:00       0.0

这是我用来达到目的的代码——它比这个例子需要的要复杂一点,因为我用它来迭代其他点的列名列表:

def sum_calc(col_name):
col =  infile[['Date_time', col_name]].copy()
col.columns = ('A', 'B')
col = col.resample('H', on='A').B.sum().reset_index(drop=True)
output[col_name] = col.copy()
sum_calc('Rainfall')

有什么线索可以让它发挥作用吗?我在网上看了一下,如果组中的任何值都是NaN,那么所有的选项似乎都会产生NaN,而不是像我追求的所有值。

尝试:

>>> df.resample("H", on="Date_time")["Rainfall"].agg(pd.Series.sum, min_count=1)
Date_time
2021-12-17 14:00:00    NaN
2021-12-17 15:00:00    0.0
Freq: H, Name: Rainfall, dtype: float64

相关内容

  • 没有找到相关文章

最新更新