如何使用fill_value在pandas中重新采样时间序列?

时间:2013-05-29 07:23:41

标签: python pandas time-series resampling

我有TimeSeries个整数,我想使用resample()进行缩减采样。问题是我有一些丢失数据的句点转换为NaN。由于pandas不支持Integer NA values,因此整数将转换为浮点数。

是否可以使用TimeSeriesfill_value重新取样,因为reindex(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

1 个答案:

答案 0 :(得分: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