3

我有一个TimeSeries整数,我想使用resample(). 问题是我有一些缺失数据的时期被转换为NaN. 由于 pandas 不支持Integer NA 值,因此整数将转换为浮点数。

是否可以像我一样TimeSeries使用 a对丢失的数据进行重新采样?我不希望我的整数转换成浮点数。fill_valuereindex(fill_value=0)

>>> dates = (datetime(2013, 1, 1), datetime(2013,1,2), datetime(2013,3,1))
>>> s = Series([1,2,4],index=dates)
>>> s
2013-01-01    1
2013-01-02    2
2013-03-01    4
dtype: int64
>>> s.resample('M', how='sum')
2013-01-31     3
2013-02-28   NaN
2013-03-31     4
Freq: M, dtype: float64

# Desired output (doesn't work)
>>> s.resample('M', how='sum', fill_value=0)
2013-01-31     3
2013-02-28     0
2013-03-31     4
Freq: M, dtype: int64
4

1 回答 1

6

您可以定义自己的函数来避免NaN

In [36]: def _sum(x):
   ....:     if len(x) == 0: return 0
   ....:     else: return sum(x)
   ....:     

In [37]: s.resample('M', how=_sum)
Out[37]: 
2013-01-31    3   
2013-02-28    0   
2013-03-31    3   
Freq: M, dtype: int64
于 2013-05-29T08:00:41.193 回答