Pandas保存CSV為xlsx后時間列變為NaN,如何解決?

Pandas保存CSV為xlsx后時間列變為NaN,如何解決?

pandas處理CSV轉XLSX時間列變NaN的有效方法

在使用Pandas將csv文件轉換為XLSX文件后,有時會遇到時間列數據變成NaN的問題。本文提供一種可靠的解決方案,避免數據丟失

問題:

從CSV導入數據到Pandas DataFrame,再導出為XLSX文件。重新讀取XLSX文件時,時間列數據顯示為NaN。

原因:

Pandas處理CSV和XLSX文件的時間數據格式存在差異。CSV文件通常以文本格式存儲日期時間,而XLSX文件對日期時間有更復雜的存儲機制。在CSV轉XLSX的過程中,Pandas可能無法正確識別時間列的格式,導致數據類型丟失或錯誤存儲。

解決方案:

關鍵在于讀取XLSX文件時,顯式指定時間列并解析其格式。 使用read_excel函數的parse_dates參數指定需要解析為日期時間的列名,并使用date_parser參數自定義日期時間解析函數。

以下代碼演示了解決方案:

import pandas as pd  # 讀取XLSX文件,并指定時間列和日期解析函數 df = pd.read_excel('output.xlsx',                     parse_dates=['審核入庫時間列'],                     date_parser=Lambda x: pd.to_datetime(x, format='%Y-%m-%d %H:%M:%S', errors='coerce'))  # 'errors='coerce'' 用于處理無法解析的日期,將其轉換為NaT (Not a Time) 而不是拋出錯誤

代碼中:

  • parse_dates=[‘審核入庫時間列’]:指定’審核入庫時間列’為需要解析的時間列。
  • date_parser=lambda x: pd.to_datetime(x, format=’%Y-%m-%d %H:%M:%S’, errors=’coerce’):定義一個匿名函數,使用pd.to_datetime函數將字符串轉換為日期時間對象。format=’%Y-%m-%d %H:%M:%S’ 指定了日期時間格式,請根據你的CSV文件中的實際時間格式進行調整。errors=’coerce’參數可以處理那些無法按照指定格式解析的日期值,將其轉換為NaT,防止程序報錯并中斷。

請根據你的CSV文件中的實際時間格式修改format參數。 例如,如果你的時間格式是yyYY/MM/DD HH:mm:ss,則應將format參數改為’%Y/%m/%d %H:%M:%S’。 正確設置格式參數是解決問題的關鍵。

? 版權聲明
THE END
喜歡就支持一下吧
點贊7 分享