python - Pandas cumulative function of series with dates and NaT -
this may known limitation, i'm struggling calculate cumulative minimum of series in pandas when series contains nat's. there way make work?
simple example below:
import pandas pd s = pd.series(pd.date_range('2008-09-15', periods=10, freq='m')) s.loc[10] = pd.nat s.cummin() valueerror: not convert object numpy datetime
this bug has been fixed in pandas 0.15.2 (to released).
as workaround, use skipna=false
, , handle nats "manually":
import pandas pd import numpy 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)
yields
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]
Comments
Post a Comment