2017-06-18 68 views
5

iki sütun altında gösterilir bir veri çerçevesinden banka tarafından ortalama bir timedelta standart sapmayı hesaplamak istiyoruz df. pandas.core.base.DataError: Ben kodu (ayrıca aşağıda gösterilen) çalıştırdığınızda hatası alıyorum Hiçbir sayısal türleri toplamak içinortalama ve pandalar bir timedelta nesnesinin standart sapma

Benim dataframe:

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 

Kodum:

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

Teşekkür ederiz!

+0

Timedelta nesnesini nasıl birleştirmek istersiniz? Birleştirme yapmak istiyorsanız '.days' veya' .seconds' özelliklerine erişin. – Abdou

cevap

5

Bazı sayısal değer, örn timedelta dönüştürmek gerekir ns dönüştürmek, çünkü en doğru olanı values tarafından int64timedelta sayısal temsili budur:

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']) 

Başka bir çözüm total_seconds tarafından seconds değerleri dönüştürmek için, ama bu daha az doğrudur:

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

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

Teşekkür ederim, bu bir çekicilik gibi çalıştı - (ilk çözümü kullandım)! –