Pandas excel nhà văn định dạng ngày giờ

klllmmm
Thợ đốn gỗ

Bài đăng. 100

Chủ đề. 37

Đã tham gia. Tháng 10 năm 2016

Danh tiếng. 1

#1

Dec-03-2020, 02. 19 PM (Bài đăng này đã được sửa đổi lần cuối. Dec-04-2020, 07. 10 giờ sáng bởi klllmmm. )

Tôi đang cố lưu khung dữ liệu gấu trúc với dữ liệu múi giờ vào sổ làm việc excel. Tuy nhiên tôi nhận được lỗi này.


______0

Error:

Traceback (most recent call last): File "", line 5, in data.to_excel(writer, sheet_name='Sheet1') File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\core\generic.py", line 2181, in to_excel engine=engine, File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 735, in write freeze_panes=freeze_panes, File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\excel\_xlsxwriter.py", line 214, in write_cells for cell in cells: File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 685, in get_formatted_cells cell.val = self._format_value(cell.val) File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 438, in _format_value "Excel does not support datetimes with " ValueError: Excel does not support datetimes with timezones. Please ensure that datetimes are timezone unaware before writing to Excel.
data.info()

Output:

# Column Non-Null Count Dtype --- ------ -------------- ----- 0 ID 2 non-null int64 1 LocalDateTime 2 non-null datetime64[ns, pytz.FixedOffset(330)]
Rất cảm kích nếu ai đó giúp tôi giải quyết vấn đề này
pd. __version__
1. 0. 5
Trăn 3. 6. 5

Hồi đáp

Tìm thấy

Hồi đáp

klllmmm
Thợ đốn gỗ

Bài đăng. 100

Chủ đề. 37

Đã tham gia. Tháng 10 năm 2016

Danh tiếng. 1

#3

Dec-08-2020, 08. 52 giờ sáng

Được quản lý để giải quyết vấn đề này bằng cách sử dụng strftime thành định dạng văn bản không bao gồm chi tiết múi giờ và sau đó chuyển đổi về định dạng ngày giờ.


______4

Output:

# Column Non-Null Count Dtype --- ------ -------------- ----- 0 ID 2 non-null int64 1 LocalDateTime 2 non-null datetime64[ns]

Hồi đáp

Tìm thấy

Hồi đáp

câu trả lời được chấp nhận

Được cho

# s = df['date']
s

0    42411.0
1    42754.0
Name: 0, dtype: float64

Chuyển đổi từ Excel sang datetime bằng cách sử dụng

s_int = s.astype(int)
# Correcting Excel Leap Year bug.
days = pd.to_timedelta(np.where(s_int > 59, s_int - 1, s_int), unit='D')
secs = pd.to_timedelta(
    ((s - s_int) * 86400.0).round().astype(int), unit='s')

pd.to_datetime('1899/12/31') + days + secs

0   2016-02-11
1   2017-01-19
dtype: datetime64[ns]

Thẩm quyền giải quyết

TUYÊN BỐ MIỄN TRỪ TRÁCH NHIỆM. Nếu bạn không biết cách viết mã, vui lòng kiểm tra công cụ của chúng tôi www. bảng tính sạch. com cho phép bạn làm điều này mà không cần mã

Nếu bạn lấy mẫu 100 người làm việc với dữ liệu và hỏi họ loại dữ liệu nào (văn bản, số, v.v.). ) thường gây rắc rối nhất cho họ, tôi cá là ít nhất một nửa trong số họ sẽ nói ngày tháng

Ngày là một mớ hỗn độn. Dường như có rất nhiều cách để định dạng chúng. Sau đó, các chương trình khác nhau sử dụng các phương pháp khác nhau để xem một đoạn văn bản có phải là ngày tháng hay không. Điều này dẫn đến kẻ thù của Dữ liệu - không chuẩn hóa và lộn xộn

PSA. Tất cả chúng ta có thể đồng ý viết ngày là YYYY-MM-DD không? . Chuyển cái này đi và hãy kết thúc Ngày tận thế này một lần cho tất cả

LÀM CUỘC SỐNG DỄ DÀNG HƠN CHO MỌI NGƯỜI

Nhưng cho đến khi tất cả chúng ta có thể hiểu được thông báo này, chúng ta thường xuyên cần chuyển đổi ngày thành một định dạng bất cứ khi nào chúng ta thực hiện phân tích dữ liệu

Hướng dẫn này phác thảo một cách để chuyển đổi ngày trong bảng tính bằng Python và Pandas. Có nhiều cách để làm điều này nhưng chúng tôi thấy đây là cách dễ nhất

Điều kiện tiên quyết

Nếu bạn không biết cách sử dụng Terminal và Python, hoặc cách đọc và ghi tệp bằng Python và Pandas, thì hãy xem hướng dẫn này trước

Giới thiệu về Đọc và Viết Bảng tính với Python

Tập tin

Chúng tôi sẽ sử dụng một tệp mẫu cho hướng dẫn này. Bạn có thể tải xuống bằng cách nhấp vào tên tệp. cuộc gọi khách hàng. xlsx

Tệp này chứa một hàng cho các cuộc gọi được thực hiện cho khách hàng. Cột ngày mà chúng ta sẽ chuẩn hóa có tên là DateTime Recorded và như được thấy bên dưới, có tất cả các loại định dạng ngày khác nhau

Chỉ có 1 đại diện được sử dụng YYYY-MM-DD. Chúng tôi có một chặng đường dài để đi…. thở dài Mã đầy đủ

Mã đầy đủ ở bên dưới và bạn có thể làm theo. Chúng tôi sẽ chia nhỏ mã trong hướng dẫn

Mã đơn giản để chuyển đổi ngày thành bất kỳ định dạng nào bạn muốn

Tạo tệp cho mã

Mở trình soạn thảo văn bản và tạo tệp date. py. Lưu cái này vào cùng thư mục với CustomerCalls. tập tin xlsx

Nhập thư viện

Dòng 1

Nhập thư viện pandas để đọc, chuyển đổi ngày tháng và viết bảng tính

import pandas as pd
Đọc tệp

dòng 4

Chúng tôi sẽ đọc bảng tính bằng gấu trúc và lưu trữ kết quả trong khung dữ liệu customer_calls

customer_calls = pd.read_excel("CustomerCalls.xlsx")
Chuyển đổi ngày thành YYYY-MM-DD & Ghi chuyển đổi vào tệp mới

Dòng 7–8

Bây giờ hãy xem dòng mã chuyển đổi ngày tháng. Đây là phần cốt lõi của hướng dẫn nên chúng ta sẽ mổ xẻ nó một cách chi tiết

Error:

Traceback (most recent call last): File "", line 5, in data.to_excel(writer, sheet_name='Sheet1') File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\core\generic.py", line 2181, in to_excel engine=engine, File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 735, in write freeze_panes=freeze_panes, File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\excel\_xlsxwriter.py", line 214, in write_cells for cell in cells: File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 685, in get_formatted_cells cell.val = self._format_value(cell.val) File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 438, in _format_value "Excel does not support datetimes with " ValueError: Excel does not support datetimes with timezones. Please ensure that datetimes are timezone unaware before writing to Excel.
0

Phía bên phải của dòng làm một vài điều

  1. Nó truy cập cột DateTime Recorded từ khung dữ liệu và sau đó chuyển đổi cột thành kiểu dữ liệu ngày giờ. Chúng tôi cần phải làm điều này trước khi chúng tôi có thể làm bất cứ điều gì trên cột này liên quan đến ngày tháng

Error:

Traceback (most recent call last): File "", line 5, in data.to_excel(writer, sheet_name='Sheet1') File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\core\generic.py", line 2181, in to_excel engine=engine, File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 735, in write freeze_panes=freeze_panes, File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\excel\_xlsxwriter.py", line 214, in write_cells for cell in cells: File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 685, in get_formatted_cells cell.val = self._format_value(cell.val) File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 438, in _format_value "Excel does not support datetimes with " ValueError: Excel does not support datetimes with timezones. Please ensure that datetimes are timezone unaware before writing to Excel.
1

2. Sau đó, chúng tôi gọi phương thức dt và strftime với một giá trị, “%Y-%m-%d” cho Python biết cách chúng tôi muốn định dạng ngày. Hãy gọi đây là chuỗi định dạng ngày. Chúng ta sẽ xem xét cách tạo giá trị này cho bất kỳ định dạng nào sau này trong hướng dẫn

Error:

Traceback (most recent call last): File "", line 5, in data.to_excel(writer, sheet_name='Sheet1') File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\core\generic.py", line 2181, in to_excel engine=engine, File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 735, in write freeze_panes=freeze_panes, File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\excel\_xlsxwriter.py", line 214, in write_cells for cell in cells: File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 685, in get_formatted_cells cell.val = self._format_value(cell.val) File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 438, in _format_value "Excel does not support datetimes with " ValueError: Excel does not support datetimes with timezones. Please ensure that datetimes are timezone unaware before writing to Excel.
2

Phía bên trái của dòng chỉ định kết quả của chuyển đổi trở lại cột DateTime Recorded của khung dữ liệu customer_calls

Error:

Traceback (most recent call last): File "", line 5, in data.to_excel(writer, sheet_name='Sheet1') File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\core\generic.py", line 2181, in to_excel engine=engine, File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 735, in write freeze_panes=freeze_panes, File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\excel\_xlsxwriter.py", line 214, in write_cells for cell in cells: File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 685, in get_formatted_cells cell.val = self._format_value(cell.val) File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 438, in _format_value "Excel does not support datetimes with " ValueError: Excel does not support datetimes with timezones. Please ensure that datetimes are timezone unaware before writing to Excel.
3

Sau đó, chúng tôi viết khung dữ liệu này với cột đã chuyển đổi thành một tệp mới. Bạn có thể mở và kiểm tra ngày đã chuyển đổi

Error:

Traceback (most recent call last): File "", line 5, in data.to_excel(writer, sheet_name='Sheet1') File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\core\generic.py", line 2181, in to_excel engine=engine, File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 735, in write freeze_panes=freeze_panes, File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\excel\_xlsxwriter.py", line 214, in write_cells for cell in cells: File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 685, in get_formatted_cells cell.val = self._format_value(cell.val) File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 438, in _format_value "Excel does not support datetimes with " ValueError: Excel does not support datetimes with timezones. Please ensure that datetimes are timezone unaware before writing to Excel.
4Tạo chuỗi định dạng ngày

Chuyển đổi sang bất kỳ định dạng nào khác yêu cầu chuỗi định dạng ngày thích hợp. Python cung cấp ánh xạ các phần phổ biến khác nhau của ngày, chẳng hạn như Năm có 4 chữ số (2019) và những gì chúng tương ứng trong Python, chẳng hạn như %Y

Trong tài liệu chính thức, đây được gọi là chỉ thị. Sau đó, bạn có thể sử dụng chúng để tạo chuỗi định dạng ngày và chuyển đổi ngày. Python sẽ thay thế các lệnh bằng giá trị ngày thích hợp được định dạng

E. g. , %Y là cả năm, %m là tháng có 2 chữ số và %d là ngày có 2 chữ số. Nếu chúng tôi muốn YYYY-MM-DD thì chúng tôi chỉ định “%Y-%m-%d”. Nếu chúng tôi muốn DD/MM/YYYY, thì chúng tôi chỉ định “%d/%m/%Y”

Theo nghĩa đen, chúng tôi có thể chỉ định bất kỳ thứ gì như “%d ngày của %m tháng tuyệt vời của % Y năm” sẽ chuyển đổi tất cả các ngày thành 24 ngày của 02 tháng tuyệt vời của năm 2019

Chúng ta hãy nhìn vào bản đồ dưới đây. Bạn cũng có thể đọc về điều này trong các tài liệu chính thức

Như bạn có thể thấy, có nhiều cách để biểu diễn hầu hết mọi thứ

Ví dụ cho ngày 22 tháng 9 năm 2019, 5. 30 giờ chiều

  1. “%A, %B %d” -> “Chủ nhật, ngày 22 tháng 9”
  2. “%d-%b-%y” -> “22-Sep-19”
  3. “%d %b, %Y — %I. %M %p trong múi giờ %Z” -> “22 tháng 9, 2019–5. 30 giờ tối theo múi giờ EST”

Một lần nữa, bạn có thể thấy chuỗi định dạng ngày có thể chứa bất kỳ thứ gì trong đó. Các lệnh được đánh dấu bằng % được thay thế bằng định dạng ngày phù hợp và mọi thứ khác vẫn giữ nguyên

Để chuyển đổi Ngày giờ được ghi thành thứ gì đó như 22-Sep-19, chuỗi định dạng ngày của bạn sẽ là “%d-%b-%y” và dòng mã của bạn để chuyển đổi ngày tháng sẽ như sau

Error:

Traceback (most recent call last): File "", line 5, in data.to_excel(writer, sheet_name='Sheet1') File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\core\generic.py", line 2181, in to_excel engine=engine, File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 735, in write freeze_panes=freeze_panes, File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\excel\_xlsxwriter.py", line 214, in write_cells for cell in cells: File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 685, in get_formatted_cells cell.val = self._format_value(cell.val) File "C:\Users\Desktop\AppData\Roaming\Python\Python36\site-packages\pandas\io\formats\excel.py", line 438, in _format_value "Excel does not support datetimes with " ValueError: Excel does not support datetimes with timezones. Please ensure that datetimes are timezone unaware before writing to Excel.
5

Vui lòng thử các kết hợp khác nhau và xuất các tệp để thử nghiệm

Những điều bổ sung

Có một số điều bạn có thể gặp phải khi chuyển đổi ngày tháng

  1. các pd. hàm to_datetime không thể chuyển đổi ngày của bạn thành đối tượng datetime. Điều này sẽ xảy ra nếu có BẤT CỨ ĐIỀU GÌ nào khác trong cột của bạn ngoại trừ ngày tháng hoặc nếu một ngày quá lạ khiến gấu trúc không thể nhận ra. Bạn sẽ phải định dạng lại/xóa giá trị vi phạm hoặc sử dụng phương pháp khác để chuyển đổi ngày tháng
  2. Nếu việc chuyển đổi sang đối tượng datetime không thành công thì sẽ không có cách nào để chuyển đổi chúng và phương thức strftime sẽ không thành công

Nếu bạn muốn có ứng dụng tùy chỉnh, dữ liệu được làm sạch hoặc dự án được tạo bằng bảng tính, bạn có thể xem dịch vụ tư vấn của chúng tôi tại đây. https. //www. bảng tình yêu. com

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

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. normalize() là hàm dùng để chuyển datetime thành date
Cột ngày là cột mới để lấy ngày từ datetime

Làm cách nào để thay đổi định dạng ngày của một cột trong Excel bằng Python?

Python sẽ thay thế các lệnh bằng giá trị ngày phù hợp được định dạng . e. g. , %Y là cả năm, %m là tháng có 2 chữ số và %d là ngày có 2 chữ số. Nếu chúng tôi muốn YYYY-MM-DD thì chúng tôi chỉ định “%Y-%m-%d”. Nếu chúng tôi muốn DD/MM/YYYY, thì chúng tôi chỉ định “%d/%m/%Y”.

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