Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Viết chương trình tách ngày và giờ từ cột datetime trong Python Pandas


Giả sử bạn có cột datetime trong DataFrame và kết quả tách ngày và giờ như sau:

             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 bài toán này, chúng ta sẽ làm theo các cách tiếp cận dưới đây:

Giải pháp 1

  • Định nghĩa DataFrame cột 'datetime' bằng pd.date_range()
pd.DataFrame({'datetime': pd.date_range('2020-01-01 07:00', periods=6)})
  • Thiết lập vòng for biến d truy xuất df['datetime'] từng cái một
  • Chuyển đổi date và time từ vòng for và lưu vào df['date'] và df['time']
for d in df['datetime']:
    df['date'] = d.date()
    df['time'] = d.time()

Ví dụ

Hãy kiểm tra 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

  • Định nghĩa một DataFrame
  • Áp dụng pd.to_datetime() trên df['datetime'] và chọn date bằng dt.date, lưu vào df['date']
  • Áp dụng pd.to_datetime() trên df['datetime'] và chọn time bằng dt.time, lưu vào df['time']

Ví dụ

Hãy kiểm tra 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