熊猫:使用 sum() 减少时间增量64 会导致 int64



根据熊猫 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]

最新更新