根据熊猫 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。
看起来像一个错误,刚刚提交了这个: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]