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

Cách dịch chuyển cột trong Pandas DataFrame


Chúng ta có thể sử dụng phương thức shift() trong Pandas để dịch chuyển các cột của DataFrame mà không cần viết lại toàn bộ DataFrame. shift() chấp nhận các tham số sau:

shift(self, periods=1, freq=None, axis=0, fill_value=None)
  • periods Số kỳ để dịch chuyển. Có thể nhận số âm.
  • axis Nhận giá trị Boolean; 0 nếu muốn dịch chuyển chỉ mục (hàng), 1 nếu muốn dịch chuyển cột.
  • fill_value Giá trị thay thế cho giá trị thiếu.

Hãy lấy một ví dụ và xem cách sử dụng phương thức shift() này.

Các bước

  • Tạo dữ liệu bảng hai chiều, kích thước có thể thay đổi, tiềm năng dị chất, df.
  • In DataFrame đầu vào, df.
  • Chọn một cột và dịch chuyển nó bằng cách sử dụng df["column_name"] = df.column_name.shift().
  • In DataFrame đã cập nhật.

Ví dụ

import pandas as pd
df = pd.DataFrame(
    dict(
        name=['John', 'Jacob', 'Tom', 'Tim', 'Ally'],
        marks=[89, 23, 100, 56, 90],
        subjects=["Math", "Physics", "Chemistry", "Biology", "English"]
    )
)
print("Input DataFrame is:\n", df)
df["name"] = df.name.shift(1)
print("After shifting column name by 1:\n", df)
df["marks"] = df.marks.shift(2)
print("After shifting column marks by 2:\n", df)
df["subjects"] = df.subjects.shift(-1)
print("After shifting column subjects by -1:\n", df)

Kết quả

Input DataFrame is:
   name  marks subjects
0  John     89     Math
1 Jacob     23  Physics
2   Tom    100 Chemistry
3   Tim     56  Biology
4  Ally     90  English
After shifting column name by 1:
   name  marks subjects
0   NaN     89     Math
1  John     23  Physics
2 Jacob    100 Chemistry
3   Tom     56  Biology
4   Tim     90  English
After shifting column marks by 2:
   name  marks subjects
0   NaN    100     Math
1  John    100  Physics
2 Jacob     89 Chemistry
3   Tom     23 Biology
4   Tim    100 English
After shifting column subjects by -1:
   name  marks subjects
0   NaN    100 Physics
1  John    100 Chemistry
2 Jacob     89 Biology
3   Tom     23 English
4   Tim    100    NaN