Giả sử bạn có DataFrame với index là DatetimeIndex và muốn dịch chuyển dữ liệu theo thời gian (shift) theo hướng dương (tương lai) và âm (quá khứ).
Giải pháp
- Tạo DatetimeIndex bằng
pd.date_range(start='01-01-2020', periods=5, freq='12H'). - Tạo DataFrame với index này.
- Dịch chuyển dương 2 kỳ:
df.shift(2, axis=0). - Dịch chuyển âm 2 kỳ:
df.shift(-2, axis=0).
Mã ví dụ
import pandas as pd
time_series = pd.date_range('01-01-2020', periods=5, freq='12H')
df = pd.DataFrame({
"Id": [1, 2, 3, 4, 5],
"Age": [10, 12, 14, 11, 13]
}, index=time_series)
print("DataFrame gốc:\n", df)
print("\nDịch chuyển +2 kỳ (tương lai):")
print(df.shift(2, axis=0))
print("\nDịch chuyển -2 kỳ (quá khứ):")
print(df.shift(-2, axis=0))
Kết quả
DataFrame gốc:
Id Age
2020-01-01 00:00:00 1 10
2020-01-01 12:00:00 2 12
2020-01-02 00:00:00 3 14
2020-01-02 12:00:00 4 11
2020-01-03 00:00:00 5 13
Dịch chuyển +2 kỳ (tương lai):
Id Age
2020-01-01 00:00:00 NaN NaN
2020-01-01 12:00:00 NaN NaN
2020-01-02 00:00:00 1.0 10.0
2020-01-02 12:00:00 2.0 12.0
2020-01-03 00:00:00 3.0 14.0
Dịch chuyển -2 kỳ (quá khứ):
Id Age
2020-01-01 00:00:00 3.0 14.0
2020-01-01 12:00:00 4.0 11.0
2020-01-02 00:00:00 5.0 13.0
2020-01-02 12:00:00 NaN NaN
2020-01-03 00:00:00 NaN NaN
Ứng dụng: Tạo feature lag/lead cho time series forecasting, so sánh kỳ trước/kỳ sau.