Hướng dẫn how to convert different date formats into one in python - cách chuyển đổi các định dạng ngày khác nhau thành một trong python

1

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Biến ngày trong dữ liệu của tôi ở nhiều định dạng như DD/mm/yyyy d/mm/yy dd/m/yyyy 12/8/2017 27/08/17 8/9/2017 10/9/2017 15/09/ 17 ..

Tôi cần thay đổi nhiều định dạng này thành một định dạng duy nhất như dd/mm/yyyy

Đã thử tạo chức năng phân tích cú pháp

def parse_date(date):
if date == '':
    return None
else:
    return dt.strptime(date, '%d/%m/%y').date()

Và khi tôi áp dụng chức năng này vào bộ dữ liệu của mình, nó đã ném cho tôi lỗi sau ..

"ValueError Traceback (cuộc gọi gần đây nhất)

Dữ liệu không được chuyển đổi vẫn còn là giá trị lỗi: Dữ liệu chưa được chuyển đổi vẫn còn: 17 "

Làm thế nào tôi có thể giải quyết dữ liệu không được chuyển đổi vẫn còn lỗi?

Đã hỏi ngày 22 tháng 1 năm 2018 lúc 14:56Jan 22, 2018 at 14:56

Hướng dẫn how to convert different date formats into one in python - cách chuyển đổi các định dạng ngày khác nhau thành một trong python

5

Bạn có thể sử dụng mô -đun DateUtil để làm điều nàydateutil module to do this

import dateutil.parser as dparser
a = ["12/8/2017", "27/08/17", "8/9/2017", "10/9/2017", "15/09/17"]

for i in a:
    print dparser.parse(i,fuzzy=True).date()

Result:

2017-12-08
2017-08-27
2017-08-09
2017-10-09
2017-09-15

Đã trả lời ngày 22 tháng 1 năm 2018 lúc 15:03Jan 22, 2018 at 15:03

Hướng dẫn how to convert different date formats into one in python - cách chuyển đổi các định dạng ngày khác nhau thành một trong python

RakeshrakeshRakesh

79,6K17 Huy hiệu vàng71 Huy hiệu bạc109 Huy hiệu đồng17 gold badges71 silver badges109 bronze badges

0

Điều này là do %y mong đợi một số 4 chữ số.

Để bao gồm nhiều định dạng ngày, bạn có thể xem thư viện ____10. (Tài liệu)

Nếu không, bạn sẽ phải tự mình đi qua các loại có thể hoặc tự mở rộng ngày. Nếu bạn chắc chắn rằng bạn chỉ cần kéo dài phần năm, bạn có thể làm một cái gì đó như thế này trước khi cung cấp chuỗi cho trình phân tích cú pháp:

date_parts = date.split('/')
if len(date_parts[2]) == 2:
    date_parts[2] = "20" + date_parts[2]
date = '/'.join(date_parts)

Tôi nghĩ rằng sử dụng thư viện

import dateutil.parser as dparser
a = ["12/8/2017", "27/08/17", "8/9/2017", "10/9/2017", "15/09/17"]

for i in a:
    print dparser.parse(i,fuzzy=True).date()
0 là cách để đi, vì nó có thể mở rộng hơn.

Đã trả lời ngày 22 tháng 1 năm 2018 lúc 15:05Jan 22, 2018 at 15:05

3

Một cách tiếp cận cơ bản là phân chia các chuỗi trên các dấu gạch chéo, và sau đó tham gia lại chúng với số lượng chính xác. Một cách tiếp cận đơn giản:

date = "12/8/2017"

parts = date.split("/")

print(parts) # ['12', '8', '2017']

if len(parts[0]) == 1:
    parts[0] = "0" + parts[0]
if len(parts[1]) == 1:
    parts[1] = "0" + parts[1]
if len(parts[2]) == 2:
    parts[2] = "20" + parts[2]
newDate = "/".join(parts)
# or 
newDate = parts[0] + "/" + parts[1] + "/" + parts[2]

print(newDate) # 12/08/2017

Sau đó, bạn có một định dạng ngày nhất quán trong suốt. (Một kiểm tra bổ sung là bắt buộc nếu ngày của bạn kéo dài vào thế kỷ trước.)

Tôi sẽ kiểm tra điều này trước và xem xét các cách tiếp cận của các câu trả lời khác nếu điều này không có hiệu suất.

Đã trả lời ngày 22 tháng 1 năm 2018 lúc 15:12Jan 22, 2018 at 15:12

Andy Gandy gAndy G

18,9K5 Huy hiệu vàng45 Huy hiệu bạc67 Huy hiệu Đồng5 gold badges45 silver badges67 bronze badges

1

Bạn có thể sử dụng pd.to_dateTime (dữ liệu, 'infer_dateTime_format = true'):

Tạo DataFrame với dữ liệu của bạn:

data = {'dates': ['2020-11-09 00:00:48' ,'2020-11-09 00:00:48',
                  '2020-11-09 00:00:48' ,'2020-11-09 00:00:48',
                  '2020-11-09 00:00:48' ,'2020-08-25',
                  '2020-08-25' ,'2017-08-25',
                  '2018-08-25' ,'2020-08-25',
                  '25.08.2020' ,'25.08.2020',
                  '25.08.2017' ,'25.08.2018',
                  '25.08.2020']}
mini_df = pd.DataFrame(data)

Chuyển đổi nó thành cùng một định dạng DateTime.

mini_df['dates'] = pd.to_datetime(mini_df['dates'], infer_datetime_format=True)

Kết quả DataFrame:

Hướng dẫn how to convert different date formats into one in python - cách chuyển đổi các định dạng ngày khác nhau thành một trong python

Hướng dẫn how to convert different date formats into one in python - cách chuyển đổi các định dạng ngày khác nhau thành một trong python

Trong bài viết này, chúng tôi sẽ chỉ ra cách chuyển đổi các định dạng ngày đầu vào khác nhau thành một định dạng ngày đầu ra duy nhất.

Định dạng ngày đã cho:

Trường hợp 1: 2019 2019-3-6 Vụ 2
Case 2: “Wed, 6, March, 19”
Case 3: “Wednesday, 6, March, 9”
Case 4: “6-3-2019” 

Định dạng ngày đầu ra phải là: 3/6/2019


// Importing datetime
 import datetime 
 
// First type of Date and it's format
 inputDate0 = "2019-3-6"
 DateFormat0 = "%Y-%m-%d"
 
 // Second type of Date and it's format
 inputDate1 = "Wed, 6, March, 19"
 DateFormat1 = "%a, %d, %B, %y"
 
 // Third type of Date and it's format
 inputDate2 = "Wednesday, 6, March, 19"
 DateFormat2 = "%A, %d, %B, %y"

 // Fourth type of Date and it's format
 inputDate3 = ""6-3-2019""
 DateFormat3 = "%d-%m-%Y"
 
 // Out date format
 outPutDateFormat = "%m/%d/%y"
 
 // Converting input date to Date type object
 date0 = datetime.datetime.strptime(inputDate0 , DateFormat0 )
 date1 = datetime.datetime.strptime(inputDate1 , DateFormat1 )
 date2 = datetime.datetime.strptime(inputDate2 , DateFormat2 )
 date3 = datetime.datetime.strptime(inputDate3 , DateFormat3 )
 
 // Print different combination of dates as per output format
 print datetime.date.strftime(date0, outPutDateFormat )
 print datetime.date.strftime(date1, outPutDateFormat )
 print datetime.date.strftime(date2, outPutDateFormat )
 print datetime.date.strftime(date3, outPutDateFormat )


Đầu ra sẽ như thế này


6/3/2019
6/3/2019
6/3/2019
6/3/2019

Vui lòng kiểm tra tài liệu Python chính thức này để biết thêm thông tin:

https://docs.python.org/2/library/datetime.html

Làm cách nào để chuyển đổi một ngày sang định dạng khác trong Python?

Sử dụng DateTime.strftime (định dạng) để chuyển đổi đối tượng DateTime thành một chuỗi theo định dạng tương ứng. Mã định dạng là các chỉ thị tiêu chuẩn để đề cập đến định dạng bạn muốn đại diện cho DateTime. Ví dụ:%d-%m-%y%H:%m:%s Mã chuyển đổi ngày thành DD-MM-YYYY HH: MM: SS. strftime(format) to convert a datetime object into a string as per the corresponding format . The format codes are standard directives for mentioning in which format you want to represent datetime. For example, the %d-%m-%Y %H:%M:%S codes convert date to dd-mm-yyyy hh:mm:ss format.

Làm cách nào để chuyển đổi một ngày trong Python?

Đối với điều này, chúng tôi sẽ sử dụng phương thức Strptime () và mô -đun pandas. Phương thức này được sử dụng để tạo một đối tượng DateTime từ một chuỗi. Sau đó, chúng tôi sẽ trích xuất ngày từ đối tượng DateTime bằng hàm ngày () và dt. Ngày từ Pandas ở Python.use the strptime() method and Pandas module. This method is used to create a DateTime object from a string. Then we will extract the date from the DateTime object using the date() function and dt. date from Pandas in Python.

Làm cách nào để chuyển đổi yyyymmdd cho đến nay trong Python?

Yyyy-MM-DD là viết tắt của ngày tháng.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.using the strptime() function. We will use the '%Y/%m/%d' format to get the string to datetime.

Làm cách nào để chuyển đổi một chuỗi thành một ngày cụ thể trong Python?

Chúng ta có thể chuyển đổi một chuỗi thành DateTime bằng hàm strptime ().Hàm này có sẵn trong các mô -đun DateTime và Time để phân tích một chuỗi vào các đối tượng DateTime và thời gian tương ứng.strptime() function. This function is available in datetime and time modules to parse a string to datetime and time objects respectively.