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

Dịch chuyển index DataFrame theo chuỗi thời gian (shift periods) Python

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.