Computer >> Máy Tính >  >> Lập trình >> Python

Viết chương trình để tách ngày và giờ khỏi cột ngày giờ trong Python Pandas

Giả sử, bạn có cột ngày giờ trong khung dữ liệu và kết quả để tách ngày và giờ là,

   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

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các cách tiếp cận dưới đây -

Giải pháp 1

  • Xác định cột ‘datetime’ của khung dữ liệu bằng cách sử dụng pd.date_range (). Nó được định nghĩa bên dưới,

pd.DataFrame({'datetime':pd.date_range('2020-01-01 07:00',periods=6)})
  • Đặt biến vòng lặp for cho lần lượt truy cập vào cột df [‘datetime’].

  • Chuyển đổi ngày và giờ từ vòng lặp for và lưu nó dưới dạng df [‘date’] và df [‘time’]. Nó được định nghĩa bên dưới,

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

Ví dụ

Hãy kiểm tra đoạn mã sau để hiểu rõ hơn -

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)

Đầu ra

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

Giải pháp 2

  • Xác định khung dữ liệu

  • Áp dụng hàm pd.to_datetime () bên trong df [‘datetime’] và chọn ngày bằng dt.date, sau đó lưu nó thành df [‘date’]

  • Áp dụng hàm pd.to_datetime () bên trong df [‘datetime’] và chọn thời gian bằng cách sử dụng dt.time, sau đó lưu nó thành df [‘time’]

Ví dụ

Hãy kiểm tra đoạn mã sau để hiểu rõ hơn -

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)

Đầu ra

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