2014-12-02 82 views
1

這可能是一個已知的限制,但我努力計算該系列包含NaT時Pandas系列的累計最小值。有沒有辦法做到這一點?熊貓與日期和NaT系列的累積函數

下面簡單示例:

import pandas as pd 

s = pd.Series(pd.date_range('2008-09-15', periods=10, freq='m')) 
s.loc[10] = pd.NaT 
s.cummin() 

ValueError: Could not convert object to NumPy datetime 

回答

1

bug has been fixed在熊貓0.15.2(被釋放)。


作爲一種變通方法,您可以使用skipna=False,和 「手動」 處理NATS:

import pandas as pd 
import numpy as np 
np.random.seed(1) 

s = pd.Series(pd.date_range('2008-09-15', periods=10, freq='m')) 
s.loc[10] = pd.NaT 
np.random.shuffle(s) 
print(s) 
# 0 2008-11-30 
# 1 2008-12-31 
# 2 2009-01-31 
# 3 2009-06-30 
# 4 2008-10-31 
# 5 2009-03-31 
# 6 2008-09-30 
# 7 2009-04-30 
# 8   NaT 
# 9 2009-05-31 
# 10 2009-02-28 
# dtype: datetime64[ns] 

mask = pd.isnull(s) 
result = s.cummin(skipna=False) 
result.loc[mask] = pd.NaT 
print(result) 

產生

0 2008-11-30 
1 2008-11-30 
2 2008-11-30 
3 2008-11-30 
4 2008-10-31 
5 2008-10-31 
6 2008-09-30 
7 2008-09-30 
8   NaT 
9 2008-09-30 
10 2008-09-30 
dtype: datetime64[ns] 
+0

其實所有我需要的是'skipna = FALSE' .. 。我想檢查一下,但我猜不是。謝謝! – user1507844 2014-12-02 02:23:09

+0

@unutbu你可以在github上做一個這個bug的問題 - 這應該工作 – Jeff 2014-12-02 03:08:10