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