如何在 Pandas DataFrame 中將浮點數轉換為日期時間?
Pandas 是一個強大的資料操作庫,廣泛用於 Python 中的資料分析和預處理任務。在處理資料時,經常會遇到日期和時間以浮點數而不是預期的日期時間格式表示的情況。在這種情況下,必須將浮點值轉換為日期時間物件才能執行準確的基於時間分析。
本文旨在提供關於如何在 Pandas DataFrame 中將浮點值轉換為日期時間物件的全面指南。
瞭解將浮點數轉換為日期時間的重要性
日期時間物件相對於日期和時間的浮點數表示具有幾個優點。透過將浮點值轉換為日期時間物件,我們可以利用 Pandas 和 Python 提供的豐富的日期時間功能集,包括日期算術、時區處理、重取樣和繪圖。
此外,將浮點數轉換為日期時間允許進行精確的基於時間的比較和計算,從而能夠準確地分析和視覺化時間序列資料。
以下是兩種在 Pandas DataFrame 中將浮點值轉換為日期時間的不同方法。
使用 Pandas 的內建函式
請考慮以下程式碼。
示例
import pandas as pd # Sample DataFrame with float column representing Unix timestamps data = {'timestamp': [1620619200.0, 1620705600.0, 1620792000.0]} df = pd.DataFrame(data) # Convert float to datetime using Pandas' to_datetime() function df['timestamp'] = pd.to_datetime(df['timestamp'], unit='s') # Print the updated DataFrame print(df)
解釋
我們首先匯入所需的庫,包括 Pandas。
我們建立一個名為 df 的示例 DataFrame,其中包含一個名為 'timestamp' 的列,該列包含表示 Unix 時間戳的浮點值。
使用 pd.to_datetime() 函式,我們將 'timestamp' 列轉換為日期時間格式。unit='s' 引數指定浮點值以秒為單位表示時間戳。如果浮點值以毫秒為單位,則可以使用 unit='ms'。
原始 'timestamp' 列將替換為轉換後的日期時間值。
最後,我們列印更新後的 DataFrame,顯示轉換結果。
輸出
timestamp 0 2021-05-10 04:00:00 1 2021-05-11 04:00:00 2 2021-05-12 04:00:00
使用自定義函式
請考慮以下程式碼。
示例
import pandas as pd # Sample DataFrame with float column representing fractional years data = {'year': [2021.5, 2022.25, 2023.75]} df = pd.DataFrame(data) # Custom function to convert fractional years to datetime def convert_to_datetime(year): year = int(year) days = int((year - int(year)) * 365.25) base_date = pd.to_datetime(f'{year}-01-01') return base_date + pd.DateOffset(days=days) # Apply the custom function to the 'year' column df['year'] = df['year'].apply(convert_to_datetime) # Print the updated DataFrame print(df)
解釋
在匯入所需的庫後,我們建立一個名為 df 的示例 DataFrame,其中包含一個名為 'year' 的列,該列包含表示小數年份的浮點值。
我們定義一個自定義函式 convert_to_datetime(year) 來將小數年份轉換為日期時間物件。
在自定義函式中,我們將浮點值轉換為表示年份的整數,並計算對應於年份小數部分的天數。
我們使用 pd.to_datetime() 建立一個基本日期,並指定年份為 1 月 1 日。
透過使用 pd.DateOffset() 新增計算出的天數,我們獲得了最終的日期時間值。
我們使用 apply() 函式將自定義函式應用於 'year' 列。
“year”列更新為轉換後的日期時間值。
最後,我們列印更新後的 DataFrame 以顯示轉換結果。
輸出
year 0 2021-01-01 1 2022-01-01 2 2023-01-01
結論
總之,在處理與時間相關的資料時,將 Pandas DataFrame 中的浮點值轉換為日期時間是一項常見任務。在本文中,我們探討了完成此任務的兩種不同方法。
第一種方法利用了 Pandas 的內建功能,特別是 pd.to_datetime() 函式。
第二種方法演示了一個自定義函式來處理更具體的場景。在這種情況下,我們解決了將小數年份轉換為日期時間物件的問題。
這兩種方法都展示了 Pandas 在資料操作和轉換方面強大的功能和靈活性。根據資料集的具體需求,您可以選擇最合適的方法。