Python: Chuyển đổi timedelta sang int trong khung dữ liệu


111

Tôi muốn tạo một cột trong khung dữ liệu gấu trúc là một số nguyên đại diện cho số ngày trong cột tính thời gian. Có thể sử dụng 'datetime.days' không hay tôi cần phải làm gì đó thủ công hơn?

cột thời gian

7 ngày, 23:29:00

cột số nguyên ngày

7


12
Bạn đã thử sử dụng timedelta.dayschưa?
Ffisegydd

Câu trả lời:


160

Sử dụng dt.daysthuộc tính. Truy cập thuộc tính này qua:

timedelta_series.dt.days

Bạn cũng có thể lấy các thuộc tính secondsmicrosecondstheo cách tương tự.


11
Tôi thích nhận xét này vì sự đơn giản và không yêu cầu nhập thư viện khác.
NickBraunagel

67

Bạn có thể làm điều này, tdchuỗi thời gian của bạn ở đâu. Bộ phận chuyển đổi các delta nano giây thành delta ngày và chuyển đổi thành int giảm xuống cả ngày.

import numpy as np

(td / np.timedelta64(1, 'D')).astype(int)

1
Cảm ơn! Ngoài ra sau 15 phút tìm kiếm tôi đã tìm thấy điều này. stackoverflow.com/questions/18215317/…
Asaf Hanish

là những gì /cho giữa tdnp?
Mục tiêu của Jason vào

Đó là nhà điều hành bộ phận hẹn giờelta64. Chia td cho delta thời gian 1 ngày được kết quả là số ngày (có thể là phân số) được biểu thị bằng td. Không bắt buộc trong trường hợp này nhưng nó thực sự hữu ích nếu nói rằng bạn muốn làm việc có bao nhiêu 15 khoảng phút td đại diện
Waterworth David

22

Đối tượng Timedelta đã read-only thuộc tính ví dụ .days, .seconds.microseconds.


6

Nếu câu hỏi không chỉ là "làm thế nào để truy cập một dạng số nguyên của bộ đếm thời gian?" nhưng "làm thế nào để chuyển đổi cột thời gian trong dataframe thành một int?" câu trả lời có thể hơi khác một chút. Ngoài công cụ truy cập .dt.daysbạn cần df.astypehoặcpd.to_numeric

Một trong hai tùy chọn này sẽ giúp:

df['tdColumn'] = pd.to_numeric(df['tdColumn'].dt.days, downcast='integer')

hoặc là

df['tdColumn'] = df['tdColumn'].dt.days.astype('int16')

Xin chào, tôi đã thử điều này, nhưng tôi nhận được ValueError: Không thể chuyển đổi giá trị không hữu hạn (NA hoặc inf) thành số nguyên vì có nans trong chuỗi gấu trúc. Bạn có biết ai để phân loại này không ???
Pablito

Tùy chọn thứ hai phù hợp với tôi và các giá trị ngày thuộc loại timedelta64[ns]. Nếu ngày của bạn là NaN, trước tiên hãy chuyển đổi chúng thành datetime bằng cách sử dụng to_datetimehàm pandas , sau đó sử dụng tùy chọn thứ hai ở trên. Để biết thêm chi tiết, hãy kiểm tra đến_datetime
Onen simon,
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.