2017-06-18 38 views
5

Tôi muốn tính giá trị trung bình và độ lệch chuẩn của một timedelta theo ngân hàng từ một khung dữ liệu với hai cột hiển thị bên dưới. Khi tôi chạy mã (còn hình dưới đây) tôi nhận được lỗi: pandas.core.base.DataError: Không có loại số để tổng hợpTìm độ lệch chuẩn và trung bình của đối tượng timedelta trong gấu trúc df

dataframe của tôi:

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 

Mã của tôi:

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

Cảm ơn bạn!

+0

Bạn muốn tổng hợp đối tượng 'timedelta' như thế nào? Truy cập thuộc tính '.days' hoặc' .seconds' nếu bạn muốn tổng hợp. – Abdou

Trả lời

5

Bạn cần chuyển đổi timedelta thành một số giá trị số, ví dụ: int64 bởi values những gì là chính xác nhất, bởi vì chuyển đổi sang ns là đại diện số của timedelta là gì:

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

Một giải pháp khác là chuyển đổi các giá trị để seconds bởi total_seconds, nhưng đó là chưa chính xác:

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

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

Cảm ơn bạn, điều này làm việc như một say mê - (Tôi đã sử dụng giải pháp đầu tiên)! –

Các vấn đề liên quan