2013-05-29 42 views
3

我有一個整數TimeSeries,我想使用resample()縮減採樣。問題是我有一些丟失數據的時間段被轉換爲NaN。由於熊貓不支持Integer NA values整數轉換爲浮點數。如何使用fill_value重新採樣熊貓中的TimeSeries?

是否有可能使用fill_valueTimeSeries進行重新採樣以獲取丟失的數據,比如我可以用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 
+0

它是如此奇怪的是,第三個值是4(一個索引爲2013-03-01)。 – waitingkuo

+0

@waitingkuo你說得對。修復了複製粘貼錯字。 – user27478

回答

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 
+0

當然,但只是從int轉換爲float並返回到int。我不想通過將浮點數轉換爲浮點數來釋放任何精度。 – user27478

+0

我認爲在將int轉換爲float時沒有精度問題。 – waitingkuo

+1

雖然你是關於鑄造問題,我添加另一種方法,希望它可以幫助。 – waitingkuo