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

Viết chương trình bằng Python để thay đổi chỉ mục khung dữ liệu theo hai dấu chấm theo hướng tích cực và tiêu cực

Giả sử, bạn có một khung dữ liệu và chỉ số dịch chuyển theo hai giai đoạn theo hướng dương và âm là,

shift the index by three periods in positive direction
                     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
shift the index by three periods in negative direction
                     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

Giải pháp

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

  • Tạo chuỗi thời gian cho gấu trúc với start =’01 -01-2020 ’, period =5, freq =’ 12H ’

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

  • Áp dụng, df.shift () để dịch chuyển chỉ mục theo hai giai đoạn theo hướng tích cực khi,

df.shift(2,axis=0)
  • Áp dụng, df.shift () để thay đổi chỉ mục hai khoảng thời gian theo hướng tiêu cực như,

df.shift(-2,axis=0)

Ví dụ

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

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 is:\n",df)
print("shift the index by three periods in positive direction")
print(df.shift(2,axis=0))
print("shift the index by three periods in negative direction")
print(df.shift(-2,axis=0))

Đầu ra

Dataframe is:
                   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
shift the index by three periods in positive direction
                     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
shift the index by three periods in negative direction
                     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