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àypd. __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 tinChú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ốnTạ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ệnDò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ệpdò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ớiDò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.
0Phía bên phải của dòng làm một vài điều
- 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.
12. 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.
2Phí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.
3Sau đó, 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àyChuyể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
- “%A, %B %d” -> “Chủ nhật, ngày 22 tháng 9”
- “%d-%b-%y” -> “22-Sep-19”
- “%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.
5Vui 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
- 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
- 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