Pandas thay đổi định dạng ngày thành yyyy-mm-dd hh:mm:ss

Thường xuyên hơn, bạn sẽ có dấu thời gian unix được biểu thị bằng giây. Như trong vài giây từ nguồn gốc mặc định của 1970-01-01

Ví dụ: tại thời điểm viết bài này, chúng ta cách 1970-01-01 1.600.355.888 giây. Đó là rất nhiều giây

Chỉ định thứ tự phân tích ngày nếu arg là str hoặc danh sách thích của nó. Nếu Đúng, phân tích ngày bằng ngày đầu tiên, ví dụ: 11/10/12 được phân tích thành 2012-11-10. Cảnh báo. dayfirst=True không nghiêm ngặt, nhưng sẽ thích phân tích cú pháp với ngày đầu tiên [đây là một lỗi đã biết, dựa trên hành vi dateutil]

đầu năm. boolean, mặc định Sai

Chỉ định thứ tự phân tích ngày nếu arg là str hoặc danh sách thích của nó

  • Nếu True phân tích cú pháp ngày có năm đầu tiên, ví dụ: 10/11/12 được phân tích cú pháp thành 2010-11-12
  • Nếu cả ngày đầu tiên và năm đầu tiên đều đúng, thì năm đầu tiên được đặt trước [giống như dateutil]

Cảnh báo. yearfirst=True không nghiêm ngặt, nhưng sẽ thích phân tích cú pháp hơn với năm đầu tiên [đây là một lỗi đã biết, dựa trên hành vi dateutil]

utc. boolean, mặc định Không có

Trả về UTC Datetime Index nếu True [chuyển đổi bất kỳ ngày giờ nhận biết tz nào. các đối tượng datetime]

hộp. boolean, mặc định Đúng

  • Nếu True trả về Datetime Index
  • Nếu Sai trả về ndarray giá trị

định dạng. chuỗi, mặc định Không có

strftime để phân tích thời gian, ví dụ: “%d/%m/%Y”, lưu ý rằng “%f” sẽ phân tích cú pháp lên đến nano giây

chính xác. boolean, True theo mặc định

  • Nếu Đúng, yêu cầu khớp định dạng chính xác
  • Nếu Sai, cho phép định dạng khớp với bất kỳ đâu trong chuỗi đích

đơn vị. đơn vị của đối số [D,s,ms,us,ns] biểu thị đơn vị trong kỷ nguyên

[e. g. dấu thời gian unix], là số nguyên/số float

suy ra_datetime_format. boolean, mặc định Sai

Nếu Đúng và không có định dạng nào được cung cấp, hãy thử suy ra định dạng của chuỗi ngày giờ và nếu có thể suy ra được, hãy chuyển sang phương pháp phân tích cú pháp nhanh hơn. Trong một số trường hợp, điều này có thể tăng tốc độ phân tích cú pháp lên ~5-10 lần

trả lại

rút lui. datetime nếu phân tích cú pháp thành công

Loại trả về phụ thuộc vào đầu vào

  • giống như danh sách. Datetime Index
  • Loạt. Chuỗi datetime64 dtype
  • vô hướng. dấu thời gian

Trong trường hợp không thể trả lại các loại được chỉ định [e. g. khi bất kỳ phần tử nào của đầu vào nằm trước Dấu thời gian. phút hoặc sau Dấu thời gian. max] trả về sẽ có ngày giờ. loại ngày giờ [hoặc mảng/Sê-ri tương ứng]

ví dụ

Lắp ráp một ngày giờ từ nhiều cột của DataFrame. Các phím có thể là các từ viết tắt phổ biến như ['year', 'month', 'day', 'minute', 'second', 'ms', 'us', 'ns']] hoặc số nhiều của các từ giống nhau

>>> df = pd.DataFrame[{'year': [2015, 2016],
                       'month': [2, 3],
                       'day': [4, 5]}]
>>> pd.to_datetime[df]
0   2015-02-04
1   2016-03-05
dtype: datetime64[ns]

Nếu một ngày không đáp ứng các giới hạn về dấu thời gian, việc chuyển lỗi=’coerce’ sẽ buộc phải NaT. Hơn nữa, điều này cũng sẽ buộc các ngày không phải là NaT

>>> pd.to_datetime['13000101', format='%Y%m%d']
datetime.datetime[1300, 1, 1, 0, 0]
>>> pd.to_datetime['13000101', format='%Y%m%d', errors='coerce']
NaT

Việc chuyển infer_datetime_format=True thường có thể tăng tốc độ phân tích cú pháp nếu nó không phải là định dạng ISO8601 chính xác mà ở định dạng thông thường

Làm việc với

>>> pd.to_datetime['13000101', format='%Y%m%d']
datetime.datetime[1300, 1, 1, 0, 0]
>>> pd.to_datetime['13000101', format='%Y%m%d', errors='coerce']
NaT
6 trong Pandas đôi khi có thể khó khăn nếu cột
>>> pd.to_datetime['13000101', format='%Y%m%d']
datetime.datetime[1300, 1, 1, 0, 0]
>>> pd.to_datetime['13000101', format='%Y%m%d', errors='coerce']
NaT
6 của bạn là một chuỗi có định dạng hỗn hợp, lộn xộn. 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
>>> pd.to_datetime['13000101', format='%Y%m%d']
datetime.datetime[1300, 1, 1, 0, 0]
>>> pd.to_datetime['13000101', format='%Y%m%d', errors='coerce']
NaT
6 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

>>> pd.to_datetime['13000101', format='%Y%m%d']
datetime.datetime[1300, 1, 1, 0, 0]
>>> pd.to_datetime['13000101', format='%Y%m%d', errors='coerce']
NaT
6 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

df['joining_date'] = pd.to_datetime[df['joining_date']]
0 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
>>> pd.to_datetime['13000101', format='%Y%m%d']
datetime.datetime[1300, 1, 1, 0, 0]
>>> pd.to_datetime['13000101', format='%Y%m%d', errors='coerce']
NaT
6 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
>>> pd.to_datetime['13000101', format='%Y%m%d']
datetime.datetime[1300, 1, 1, 0, 0]
>>> pd.to_datetime['13000101', format='%Y%m%d', errors='coerce']
NaT
6 với định dạng chuẩn [mặc định là YYYY-MM-DD]. Vì theo mặc định,
df['joining_date'] = pd.to_datetime[df['joining_date'], dayfirst=True]
0 phân tích chuỗi có định dạng đầu tiên của tháng [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

>>> pd.to_datetime['13000101', format='%Y%m%d']
datetime.datetime[1300, 1, 1, 0, 0]
>>> pd.to_datetime['13000101', format='%Y%m%d', errors='coerce']
NaT
2

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
>>> pd.to_datetime['13000101', format='%Y%m%d']
datetime.datetime[1300, 1, 1, 0, 0]
>>> pd.to_datetime['13000101', format='%Y%m%d', errors='coerce']
NaT
20

>>> pd.to_datetime['13000101', format='%Y%m%d']
datetime.datetime[1300, 1, 1, 0, 0]
>>> pd.to_datetime['13000101', format='%Y%m%d', errors='coerce']
NaT
5

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

>>> pd.to_datetime['13000101', format='%Y%m%d']
datetime.datetime[1300, 1, 1, 0, 0]
>>> pd.to_datetime['13000101', format='%Y%m%d', errors='coerce']
NaT
6 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 để thay đổi loại ngày trong gấu trúc?

Sử dụng gấu trúc. phương thức to_datetime[] được sử dụng để thay đổi thời gian Chuỗi/Đối tượng thành loại ngày [datetime64[ns]]. Phương pháp này đủ thông minh để thay đổi các định dạng khác nhau của cột ngày Chuỗi thành ngày.

Làm cách nào để thay đổi định dạng ngày từ mm dd yyyy thành dd mm yyyy trong gấu trúc?

phương thức strftime[]. 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 dt. strftime['%m/%d/%Y'] . của bạn đi.

Làm cách nào để thay đổi định dạng thời gian trong gấu trúc?

Pandas Convert Date to String Format – Để thay đổi/chuyển đổi datetime của pandas [ datetime64[ns] ] từ định dạng mặc định sang String/Object hoặc định dạng tùy chỉnh, hãy sử dụng pandas. Loạt. đt. phương thức strftime[]

Làm cách nào để thay đổi định dạng ngày giờ thành ngày trong gấu trúc?

Bạn có thể chuyển đổi DateTime thành Date trong pandas bằng cách sử dụng dt. ngày và dt. phương thức chuẩn hóa [] . Trong Pandas, DateTime là tập hợp ngày và giờ ở định dạng “YYYY-MM-DD HH. MM. SS” trong đó YYYY-MM-DD được gọi là ngày và HH. MM. SS được gọi là Thời gian.

Chủ Đề