根据pandas 0.13.1手册,你可以减少numpy timedelta64系列:
http://pandas.pydata.org/pandas-docs/stable/timeseries.html#time-deltas-reductions
这似乎可以正常使用,例如mean()
:
In[107]:
pd.Series(np.random.randint(0,100000,100).astype("timedelta64[ns]")).mean()
Out[107]:
0 00:00:00.000047
dtype: timedelta64[ns]
但是,使用sum()
,这总是会产生一个整数:
In [108]:
pd.Series(np.random.randint(0,100000,100).astype("timedelta64[ns]")).sum()
Out[108]:
5047226
这是一个错误,还是例如溢出导致这个?将结果转换为timedelta64
是否安全?我该如何解决这个问题?
我正在使用numpy 1.8.0。
答案 0 :(得分:1)
看起来像一个错误,只是提交了这个:https://github.com/pydata/pandas/issues/6462
结果以纳秒为单位;作为解决方案,你可以做到这一点:
In [1]: s = pd.to_timedelta(range(4),unit='d')
In [2]: s
Out[2]:
0 0 days
1 1 days
2 2 days
3 3 days
dtype: timedelta64[ns]
In [3]: s.mean()
Out[3]:
0 1 days, 12:00:00
dtype: timedelta64[ns]
In [4]: s.sum()
Out[4]: 518400000000000
In [8]: pd.to_timedelta([s.sum()])
Out[8]:
0 6 days
dtype: timedelta64[ns]