2017-06-18 141 views
5

我想从下面两列的数据框中计算银行从一个timedelta的平均值和标准偏差。当我运行的代码(如下所示)我得到的错误:pandas.core.base.DataError:没有数字类型聚集寻找pandas中的timedelta对象的均值和标准差df

我的数据框:

bank       diff 
    Bank of Japan     0 days 00:00:57.416000 
    Reserve Bank of Australia  0 days 00:00:21.452000 
    Reserve Bank of New Zealand 55 days 12:39:32.269000 
    U.S. Federal Reserve   8 days 13:27:11.387000 

我的代码:

means = dropped.groupby('bank').mean() 
std = dropped.groupby('bank').std() 

谢谢!

+0

你想如何聚合'timedelta'对象?如果您想要聚合,请访问'.days'或'.seconds'属性。 – Abdou

回答

5

您需要将timedelta转换为某个数值,例如, int64通过values什么是最准确的,因为转换为ns是什么,是的timedelta数字表示:

dropped['new'] = dropped['diff'].values.astype(np.int64) 

means = dropped.groupby('bank').mean() 
means['new'] = pd.to_timedelta(means['new']) 

std = dropped.groupby('bank').std() 
std['new'] = pd.to_timedelta(std['new']) 

另一个解决方案是通过total_seconds将值转换为seconds,但是这是不准确的:

dropped['new'] = dropped['diff'].dt.total_seconds() 

means = dropped.groupby('bank').mean() 
+0

谢谢,这就像一个魅力 - (我用第一个解决方案)! –