2014-12-02 2 views
1

Это может быть известное ограничение, но я изо всех сил пытаюсь вычислить кумулятивный минимум серии в Pandas, когда эта серия содержит 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

+0

@unutbu может у вас ошибка в этом вопросе на github - это должно работать – Jeff

Смежные вопросы