2017-06-18 22 views
5

でTimedeltaオブジェクトの平均と標準偏差を求める以下の2つの列を持つデータフレームからTimedeltaの平均と標準偏差をバ​​ンクごとに計算したいと思います。私はコード(また、以下に示す)を実行すると、私はエラーを取得する:pandas.core.base.DataError:pandas 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を数値に変換する必要があります。 nsに変換するので、最も正確であるかvaluesによってint64timedeltaの数値表現は何かということです:

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

ありがとう、これは魅力的なように機能しました - (私は最初のソリューションを使用しました)! –

関連する問題