使用 Python Pandas 從 datetime 列中分離日期和時間


假設,您在資料框中有一個 datetime 列,分離日期和時間的結果如下所示:

   datetime    date          time
0 2020-01-01 07:00:00 2020-01-06 07:00:00
1 2020-01-02 07:00:00 2020-01-06 07:00:00
2 2020-01-03 07:00:00 2020-01-06 07:00:00
3 2020-01-04 07:00:00 2020-01-06 07:00:00
4 2020-01-05 07:00:00 2020-01-06 07:00:00
5 2020-01-06 07:00:00 2020-01-06 07:00:00

為了解決這個問題,我們將遵循以下方法:

方案 1

  • 使用 pd.date_range() 定義一個數據框的“datetime”列。定義如下:

pd.DataFrame({'datetime':pd.date_range('2020-01-01 07:00',periods=6)})
  • 設定 for 迴圈 d 變數,逐個訪問 df[‘datetime’] 列。

  • 從 for 迴圈中轉換日期和時間,並將其儲存為 df[‘date’] 和 df[‘time’]。定義如下:

for d in df['datetime']:
   df['date'] = d.date()
   df['time'] = d.time()

示例

讓我們檢查以下程式碼以更好地理解:

import pandas as pd
df = pd.DataFrame({'datetime':pd.date_range('2020-01-01 07:00',periods=6)})
print("DataFrame is:\n", df)
for d in df['datetime']:
   df['date'] = d.date()
   df['time'] = d.time()
print(df)

輸出

DataFrame is:
             datetime
0 2020-01-01 07:10:00
1 2020-01-02 07:10:00
2 2020-01-03 07:10:00
3 2020-01-04 07:10:00
4 2020-01-05 07:10:00
5 2020-01-06 07:10:00
Date-time-hour-minutes :
             datetime    date      time
0 2020-01-01 07:10:00 2020-01-06 07:10:00
1 2020-01-02 07:10:00 2020-01-06 07:10:00
2 2020-01-03 07:10:00 2020-01-06 07:10:00
3 2020-01-04 07:10:00 2020-01-06 07:10:00
4 2020-01-05 07:10:00 2020-01-06 07:10:00
5 2020-01-06 07:10:00 2020-01-06 07:10:00

方案 2

  • 定義一個數據框

  • 在 df[‘datetime’] 內應用 pd.to_datetime() 函式,使用 dt.date 選擇日期,然後將其儲存為 df[‘date’]

  • 在 df[‘datetime’] 內應用 pd.to_datetime() 函式,使用 dt.time 選擇時間,然後將其儲存為 df[‘time’]

示例

讓我們檢查以下程式碼以更好地理解:

import pandas as pd
df = pd.DataFrame({'datetime':pd.date_range('2020-01-01 07:10',periods=6)})
print("DataFrame is:\n", df)
df['date'] = pd.to_datetime(df['datetime']).dt.date
df['time'] = pd.to_datetime(df['datetime']).dt.time
print("Date-time-hour-minutes :\n", df)

輸出

DataFrame is:
             datetime
0 2020-01-01 07:10:00
1 2020-01-02 07:10:00
2 2020-01-03 07:10:00
3 2020-01-04 07:10:00
4 2020-01-05 07:10:00
5 2020-01-06 07:10:00
Date-time-hour-minutes :
             datetime    date      time
0 2020-01-01 07:10:00 2020-01-06 07:10:00
1 2020-01-02 07:10:00 2020-01-06 07:10:00
2 2020-01-03 07:10:00 2020-01-06 07:10:00
3 2020-01-04 07:10:00 2020-01-06 07:10:00
4 2020-01-05 07:10:00 2020-01-06 07:10:00
5 2020-01-06 07:10:00 2020-01-06 07:10:00

更新於: 2021年2月25日

10K+ 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.