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
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
Câu trả lời:
Sử dụng dt.days
thuộ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 seconds
và microseconds
theo cách tương tự.
Bạn có thể làm điều này, td
chuỗ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)
/
cho giữa td
và np
?
Đối tượng Timedelta đã read-only thuộc tính ví dụ .days
, .seconds
và .microseconds
.
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.days
bạn cần df.astype
hoặ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')
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_datetime
hà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
timedelta.days
chưa?