Hướng dẫn how do i change the format of a date column in python? - làm cách nào để thay đổi định dạng của cột ngày trong python?

Có một sự khác biệt giữa

  • nội dung của ô dữ liệu (giá trị nhị phân) vàcontent of a dataframe cell (a binary value) and
  • Trình bày của nó (hiển thị nó) cho chúng ta, con người.presentation (displaying it) for us, humans.

Vì vậy, câu hỏi là: Làm thế nào để đạt được bản trình bày thích hợp của các dữ liệu của tôi mà không thay đổi các loại dữ liệu / dữ liệu?presentation of my datas without changing the data / data types themselves?

Đây là câu trả lời:

  • Nếu bạn sử dụng sổ ghi chép Jupyter để hiển thị DataFrame của bạn hoặc
  • Nếu bạn muốn đạt được một bản trình bày dưới dạng tệp HTML (ngay cả với nhiều thuộc tính
    df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
    
    3 và
    df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
    
    4 đã chuẩn bị cho kiểu dáng CSS hơn nữa - bạn có thể hoặc bạn không sử dụng chúng),HTML file (even with many prepared superfluous
    df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
    
    3 and
    df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
    
    4 attributes for further CSS styling — you may or you may not use them),

Sử dụng kiểu dáng. Kiểu dáng không thay đổi dữ liệu / dữ liệu Các loại cột của DataFrame của bạn.Styling don't change data / data types of columns of your dataframe.

Bây giờ tôi chỉ cho bạn cách tiếp cận nó trong sổ ghi chép Jupyter - để trình bày dưới dạng tệp HTML, hãy xem ghi chú gần cuối câu trả lời này.

Tôi sẽ cho rằng cột của bạn

df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
5 đã có loại
df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
6 (bạn đã cho thấy rằng bạn biết cách tiếp cận nó). Tôi đã chuẩn bị một khung dữ liệu đơn giản (chỉ có một cột) để hiển thị cho bạn một số kiểu dáng cơ bản:

  • Không theo kiểu:

    df
    
          DOB
0  2019-07-03
1  2019-08-03
2  2019-09-03
3  2019-10-03
  • Kiểu nó là

    df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
    
    7:

    df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
    
          DOB
0  07/03/2019
1  08/03/2019
2  09/03/2019
3  10/03/2019
  • Kiểu nó là

    df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
    
    8:

    df.style.format({"DOB": lambda t: t.strftime("%d-%m-%Y")}) 
    
          DOB
0  03-07-2019
1  03-08-2019
2  03-09-2019
3  03-10-2019

Hãy cẩn thận! Đối tượng trả về không phải là DataFrame - nó là đối tượng của lớp

df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
9, vì vậy đừng gán lại cho
          DOB
0  07/03/2019
1  08/03/2019
2  09/03/2019
3  10/03/2019
0:
The returning object is NOT a dataframe — it is an object of the class
df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
9, so don't assign it back to
          DOB
0  07/03/2019
1  08/03/2019
2  09/03/2019
3  10/03/2019
0:

Đừng làm điều này:

df = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})    # Don't do this!

.


Câu hỏi và trả lời:

  • Hỏi: Tại sao đối tượng styler của bạn (hoặc một biểu thức trả về nó) được sử dụng làm lệnh cuối cùng trong một ô Notebook Jupyter hiển thị bảng (kiểu dáng) của bạn chứ không phải chính đối tượng styler? Why your Styler object (or an expression returning it) used as the last command in a Jupyter notebook cell displays your (styled) table, and not the Styler object itself?

  • Trả lời: Bởi vì mọi đối tượng Styler đều có phương thức gọi lại

              DOB
    0  07/03/2019
    1  08/03/2019
    2  09/03/2019
    3  10/03/2019
    
    3 trả về mã HTML để hiển thị DataFrame của bạn (như một bảng HTML đẹp). Because every Styler object has a callback method
              DOB
    0  07/03/2019
    1  08/03/2019
    2  09/03/2019
    3  10/03/2019
    
    3 which returns an HTML code for rendering your dataframe (as a nice HTML table).

    Jupyter Notebook IDE tự động gọi phương thức này để hiển thị các đối tượng có nó.


Note:

Bạn không cần sổ ghi chép Jupyter để tạo kiểu (nghĩa là, để xuất bản dữ liệu mà không thay đổi các loại dữ liệu / dữ liệu của nó).

Một đối tượng Styler cũng có phương thức

          DOB
0  07/03/2019
1  08/03/2019
2  09/03/2019
3  10/03/2019
4, nếu bạn muốn có được một chuỗi với mã HTML (ví dụ: để xuất bản DataFrame được định dạng của bạn trên web hoặc chỉ cần trình bày bảng của bạn ở định dạng HTML):

df_styler = df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
HTML_string = df_styler.render()

Khi làm việc với dữ liệu, bạn có thể thường gặp các trường hợp trong đó ngày của bạn không ở định dạng bạn muốn. Ví dụ, các ngày ở định dạng của Yyyy-MM-DD và bạn muốn chúng ở định dạng MM MM-DD-Yyyy. Trong hướng dẫn này, chúng tôi sẽ xem xét cách thay đổi định dạng của cột ngày trong khung dữ liệu gấu trúc.

Làm thế nào để thay đổi định dạng ngày của một cột?

Để thay đổi định dạng ngày của một cột trong Pandas DataFrame, bạn có thể sử dụng chức năng Pandas Series

          DOB
0  07/03/2019
1  08/03/2019
2  09/03/2019
3  10/03/2019
5. Vượt qua định dạng mà bạn muốn ngày của bạn có. Sau đây là cú pháp:

# change the format to DD-MM-YYYY
df['Col'] = df['Col'].dt.strftime('%d-%m%Y')

Ở đây, COL Col là cột DateTime mà bạn muốn thay đổi định dạng. Hàm

          DOB
0  07/03/2019
1  08/03/2019
2  09/03/2019
3  10/03/2019
5 trả về một mảng ngày được định dạng dưới dạng chuỗi.

Ví dụ

Hãy cùng xem xét việc sử dụng chức năng này với sự trợ giúp của một số ví dụ. Đầu tiên, hãy để Lôi tạo một khung dữ liệu mẫu mà chúng tôi sẽ sử dụng trong suốt hướng dẫn này.

import pandas as pd

# create a dataframe
df = pd.DataFrame({
    'Name': ['Jim', 'Dwight', 'Pam', 'Angela', 'Michael'],
    'Birthday': ['1980-04-01', '1978-06-24', '1982-10-07', '1980-12-25', '1970-02-28']
})
# show the dataframe
print(df)

Output:

          DOB
0  2019-07-03
1  2019-08-03
2  2019-09-03
3  2019-10-03
0

Bây giờ chúng tôi có một dữ liệu lưu trữ tên và sinh nhật của nhân viên tại một văn phòng. Hãy cùng tìm loại dữ liệu của cột Sinh nhật trên mạng bằng cách sử dụng hàm Pandas Info ().

          DOB
0  2019-07-03
1  2019-08-03
2  2019-09-03
3  2019-10-03
1

Output:

          DOB
0  2019-07-03
1  2019-08-03
2  2019-09-03
3  2019-10-03
2

Bạn có thể thấy rằng cột sinh nhật của người Viking là loại đối tượng. Hãy để chuyển đổi nó thành DateTime, sử dụng chức năng Pandas

          DOB
0  07/03/2019
1  08/03/2019
2  09/03/2019
3  10/03/2019
7.

          DOB
0  2019-07-03
1  2019-08-03
2  2019-09-03
3  2019-10-03
3

Output:

          DOB
0  2019-07-03
1  2019-08-03
2  2019-09-03
3  2019-10-03
4

Bây giờ chúng tôi có cột DateTime của chúng tôi, hãy để tiếp tục và xem các ví dụ về cách thay đổi định dạng ngày.

Định dạng mm-dd-yyyy

Hãy để tạo ra một cột mới, sinh nhật222, nơi lưu trữ sinh nhật ở định dạng

          DOB
0  07/03/2019
1  08/03/2019
2  09/03/2019
3  10/03/2019
8. Đó là, ngày 1980 1980-04-01, sẽ được thể hiện dưới dạng 04-01-1980. Đối với điều này, hãy chuyển chuỗi định dạng ngày
          DOB
0  07/03/2019
1  08/03/2019
2  09/03/2019
3  10/03/2019
9 cho hàm
          DOB
0  07/03/2019
1  08/03/2019
2  09/03/2019
3  10/03/2019
5.

          DOB
0  2019-07-03
1  2019-08-03
2  2019-09-03
3  2019-10-03
5

Output:

          DOB
0  2019-07-03
1  2019-08-03
2  2019-09-03
3  2019-10-03
6

Trong chuỗi định dạng ngày,

df.style.format({"DOB": lambda t: t.strftime("%d-%m-%Y")}) 
1 đại diện cho tháng dưới dạng số không có,
df.style.format({"DOB": lambda t: t.strftime("%d-%m-%Y")}) 
2 đại diện cho ngày trong tháng dưới dạng một con số bằng không, và
df.style.format({"DOB": lambda t: t.strftime("%d-%m-%Y")}) 
3 đại diện cho năm với thế kỷ (nghĩa là năm 2017 và không chỉ 17, đó là đại diện bởi
df.style.format({"DOB": lambda t: t.strftime("%d-%m-%Y")}) 
4).

Lưu ý rằng nếu bạn kiểm tra kiểu dữ liệu của cột Sinh nhật222, thì nó sẽ thuộc loại đối tượng của Cameron vì hàm

          DOB
0  07/03/2019
1  08/03/2019
2  09/03/2019
3  10/03/2019
5 trả về ngày được định dạng là chuỗi.

          DOB
0  2019-07-03
1  2019-08-03
2  2019-09-03
3  2019-10-03
1

Output:

          DOB
0  2019-07-03
1  2019-08-03
2  2019-09-03
3  2019-10-03
8

Định dạng DD-MM-YYYY

Hãy để tạo ra một cột mới, sinh nhật của 3, nơi lưu trữ sinh nhật ở định dạng

df.style.format({"DOB": lambda t: t.strftime("%d-%m-%Y")}) 
6. Đó là, ngày 1980 1980-04-01, sẽ được thể hiện dưới dạng 01-04-1980. Đối với điều này, hãy chuyển chuỗi định dạng ngày
df.style.format({"DOB": lambda t: t.strftime("%d-%m-%Y")}) 
7 cho hàm
          DOB
0  07/03/2019
1  08/03/2019
2  09/03/2019
3  10/03/2019
5.

          DOB
0  2019-07-03
1  2019-08-03
2  2019-09-03
3  2019-10-03
9

Output:

df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
0

Các ngày trong cột Birthday33 có trong

df.style.format({"DOB": lambda t: t.strftime("%d-%m-%Y")}) 
6.

Định dạng ngày tháng, năm

Hãy để tạo ra một cột mới, sinh nhật 3, nơi lưu trữ sinh nhật ở định dạng

          DOB
0  03-07-2019
1  03-08-2019
2  03-09-2019
3  03-10-2019
0. Đó là, ngày 1980 1980-04-01, sẽ được đại diện là ngày 01 tháng 4 năm 1980. Đối với điều này, hãy chuyển chuỗi định dạng ngày
          DOB
0  03-07-2019
1  03-08-2019
2  03-09-2019
3  03-10-2019
1 cho hàm
          DOB
0  07/03/2019
1  08/03/2019
2  09/03/2019
3  10/03/2019
5.

df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
1

Output:

df.style.format({"DOB": lambda t: t.strftime("%m/%d/%Y")})
2

          DOB
0  03-07-2019
1  03-08-2019
2  03-09-2019
3  03-10-2019
3 trong chuỗi định dạng đại diện cho tên tháng đầy đủ. Bạn có thể tìm thấy danh sách đầy đủ các mã định dạng có thể được sử dụng trong hàm strftime () ở đây.

Để biết thêm về chức năng Pandas Series dt.strftime (), hãy tham khảo tài liệu của nó.

Bạn cũng có thể quan tâm đến - gấu trúc - trích xuất năm từ cột DateTime

Với điều này, chúng tôi đi đến cuối hướng dẫn này. Các ví dụ và kết quả mã được trình bày trong hướng dẫn này đã được triển khai trong A & NBSP; Jupyter Notebook & NBSP; với hạt nhân Python (phiên bản 3.8.3) có Pandas phiên bản 1.0.5


Đăng ký nhận bản tin của chúng tôi để biết thêm hướng dẫn và hướng dẫn thông tin. Chúng tôi không spam và bạn có thể từ chối bất cứ lúc nào.
We do not spam and you can opt out any time.

Hướng dẫn về định dạng dữ liệu gấu trúc -

  • Gấu trúc - thay đổi định dạng của cột ngày
  • Định dạng ký hiệu khoa học cho phao trong gấu trúc
  • Hiển thị tất cả các cột của Pandas DataFrame trong Jupyter Notebook

  • Piyush là một nhà khoa học dữ liệu đam mê sử dụng dữ liệu để hiểu mọi thứ tốt hơn và đưa ra quyết định sáng suốt. Trong quá khứ, anh ta làm việc như một nhà khoa học dữ liệu cho ZS và có bằng kỹ sư từ IIT Roorkee. Sở thích của anh ấy bao gồm xem cricket, đọc sách và làm việc trên các dự án phụ.

    Xem tất cả các bài viết

Làm cách nào để thay đổi định dạng ngày trong Python?

Từ DateTime Nhập DateTime ..
date_time_str = '18/09/19 01:55:19 '.
date_time_obj = DateTime.Strptime (date_time_str, '%d/%m/%y%h:%m:%s').
In ("Loại ngày là bây giờ", loại (DATE_TIME_OBJ)).

Làm cách nào để thay đổi định dạng ngày từ yyyy mm dd trong python?

Chúng ta có thể chuyển đổi định dạng chuỗi thành DateTime bằng cách sử dụng hàm strptime ().Chúng tôi sẽ sử dụng định dạng '%Y/%M/%D' để đưa chuỗi vào DateTime ...
Đầu vào là chuỗi DateTime ..
Định dạng là định dạng-'Yyyy-MM-DD'.
DateTime là mô -đun ..

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

Xin lưu ý rằng bạn cũng có thể chỉ định định dạng ngày đầu ra khác với bảng định mặc, bằng cách sử dụng DT.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').dt. strftime('%m/%d/%Y') .