Pandas to_excel định dạng ngày

Làm việc với datetime trong Pandas đôi khi có thể khó khăn nếu cột datetime của bạn là một chuỗi có định dạng lộn xộn, hỗn hợp. Bạn sẽ cần thực hiện một số bước tiền xử lý và chuyển đổi các định dạng hỗn hợp thành loại datetime tiêu chuẩn để thực hiện mọi phân tích dữ liệu tiếp theo

Hãy cùng xem ví dụ sau. Trong khung dữ liệu này, chúng tôi có một cột có tên là 'joining_date' có vẻ là cột datetime nhưng thực ra là cột chuỗi. Hơn nữa, tất cả các ngày đều được sắp xếp theo các định dạng khác nhau

Ví dụ: đối với ID a0001, chuỗi ngày được sắp xếp trong DD. MM. Định dạng YYYY trong đó ngày được viết đầu tiên. Đối với ID a0005, chuỗi ngày được hiển thị ở định dạng DD-MM-YY trong đó ngày cũng được viết trước. Đối với ID a0002, chuỗi ngày được sắp xếp theo định dạng MM/DD/YYYY với tháng được viết trước, điều này phổ biến ở Hoa Kỳ. S

Hình ảnh của tác giả

Vậy chúng ta có thể làm gì để xóa cột chuỗi ngày lộn xộn có nhiều định dạng khác nhau một cách dễ dàng và hiệu quả?

Trước tiên, hãy thử phương pháp to_datetime() của Pandas có thể phân tích cú pháp bất kỳ chuỗi ngày hợp lệ nào thành datetime một cách dễ dàng. Nếu chúng tôi chỉ đơn giản làm như sau mà không có bất kỳ đối số bổ sung nào, chúng tôi sẽ nhận được kết quả hiển thị bên dưới

df['joining_date'] = pd.to_datetime(df['joining_date'])

Hình ảnh của tác giả

Chúng ta có thể thấy rằng với phương thức

df['joining_date'] = pd.to_datetime(df['joining_date'], dayfirst=True)
0, chúng ta có thể phân tích các chuỗi ngày có định dạng hỗn hợp thành datetime với định dạng chuẩn (mặc định là YYYY-MM-DD). Vì
df['joining_date'] = pd.to_datetime(df['joining_date'], dayfirst=True)
0 theo mặc định phân tích chuỗi có định dạng tháng đầu tiên (MM/DD, MM DD hoặc MM-DD), nên nó trộn lẫn ngày và tháng cho các chuỗi ngày với định dạng ngày đầu tiên (e. g. , ĐD. MM. YYYY cho những ngày có dấu gạch chéo màu đỏ)

Để khắc phục sự cố này, chúng ta chỉ cần thêm đối số

df['joining_date'] = pd.to_datetime(df['joining_date'], dayfirst=True)
3 vào mã bên dưới

df['joining_date'] = pd.to_datetime(df['joining_date'], dayfirst=True)

Hình ảnh của tác giả

Vâng. Vì vậy, điều này đã khắc phục vấn đề trước đó nhưng tạo ra một vấn đề mới. Đối với chuỗi ngày có định dạng MM/DD/YYYY (hàng 7), vì chúng tôi đặt đối số

df['joining_date'] = pd.to_datetime(df['joining_date'], dayfirst=True)
4 thành
df['joining_date'] = pd.to_datetime(df['joining_date'], dayfirst=True)
5, nó đã chuyển đổi 3/5/2016 thành 2016–03–05, coi 5 là ngày và 3 là

Để khắc phục sự cố mới này, chúng ta có thể áp dụng điều kiện

df['joining_date'] = pd.to_datetime(df['joining_date'], dayfirst=True)
6 để chỉ đặt đối số
df['joining_date'] = pd.to_datetime(df['joining_date'], dayfirst=True)
4 thành
df['joining_date'] = pd.to_datetime(df['joining_date'], dayfirst=True)
5 cho các chuỗi ngày có ngày được viết trước

df['joining_date_clean'] = np.where(df['joining_date'].str.contains('/'), pd.to_datetime(df['joining_date']), pd.to_datetime(df['joining_date'], dayfirst=True))

Hình ảnh của tác giả

Nó hoạt động. Bây giờ chúng ta có một cột ngày rõ ràng hơn nhiều để làm việc với. Xin lưu ý rằng bạn cũng có thể chỉ định định dạng ngày đầu ra khác với định dạng mặc định, bằng cách sử dụng phương thức

df['joining_date'] = pd.to_datetime(df['joining_date'], dayfirst=True)
9. Ví dụ: bạn có thể chọn hiển thị ngày đầu ra là MM/DD/YYYY bằng cách chỉ định
df['joining_date_clean'] = np.where(df['joining_date'].str.contains('/'), pd.to_datetime(df['joining_date']), pd.to_datetime(df['joining_date'], dayfirst=True))
0

df['joining_date_clean'] = np.where(df['joining_date'].str.contains('/'), pd.to_datetime(df['joining_date']).dt.strftime('%m/%d/%Y'), pd.to_datetime(df['joining_date'], dayfirst=True).dt.strftime('%m/%d/%Y'))

Hình ảnh của tác giả

của bạn đi. Không cần thực hiện bất kỳ thao tác chuỗi ưa thích nào, chúng tôi có thể chuyển đổi chuỗi ngày lộn xộn trong tập dữ liệu gốc thành cột datetime tiêu chuẩn. Tôi hy vọng bạn đã học được một số thủ thuật về cách làm việc với các cột chuỗi ngày lộn xộn trong Pandas. Cảm ơn đã đọc và hy vọng bạn thích hướng dẫn ngắn này

Nguồn dữ liệu

Bộ dữ liệu mẫu được sử dụng trong bài đăng này được tạo bởi tác giả cho mục đích trình diễn

Bạn có thể mở khóa toàn quyền truy cập vào bài viết của tôi và phần còn lại của Phương tiện bằng cách đăng ký làm thành viên Phương tiện ($5 mỗi tháng) thông qua liên kết giới thiệu này. Bằng cách đăng ký qua liên kết này, tôi sẽ nhận được một phần phí thành viên của bạn mà bạn không phải trả thêm phí. Cảm ơn bạn

Làm cách nào tôi có thể định dạng ngày trong gấu trúc?

nhập gấu trúc dưới dạng pd. # đầu vào tính bằng mm. đ. định dạng yyyy. ngày = ['01. 02. 2019'].
nhập gấu trúc dưới dạng pd. # ngày (mm. đ. yyyy) và thời gian (H. MM. SS) ngày = ['01. 02. 2019 1. 30. 00 giờ tối'].
nhập gấu trúc dưới dạng pd. # gấu trúc diễn giải ngày này ở định dạng m-d-yyyy. in (pd. .
nhập gấu trúc dưới dạng pd. ngày = '2019-07-31 12. 00. 00-UTC' bản in (pd

Làm cách nào để trích xuất ngày từ tệp excel bằng gấu trúc?

Cách tiếp cận. .
Nhập mô-đun cần thiết
Nhập dữ liệu từ tệp Excel
Tạo một cột bổ sung cho một ngày mới
Đặt chỉ mục để tìm kiếm
Xác định mẫu định dạng ngày
Ngày tìm kiếm và gán cho cột tương ứng trong Dataframe

Làm cách nào để chuyển đổi ngày giờ thành ngày trong DataFrame?

Cú pháp. .
dataframe là khung dữ liệu đầu vào
to_datetime là hàm dùng để chuyển chuỗi datetime thành datetime
DateTime là cột ngày giờ trong khung dữ liệu
đt. ngày được sử dụng để chuyển đổi ngày giờ thành ngày
Cột ngày là cột mới để lấy ngày từ datetime

Làm cách nào để thay thế ngày trong gấu trúc?

Trong gấu trúc, gấu trúc. Dấu thời gian chứa hàm replace() để thay thế các trường ngày và giờ của đối tượng Dấu thời gian đã cho. Nó tương đương với đối tượng datetime của Python.