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

Xóa hàng/cột DataFrame pandas với drop() Python

Mô tả

Hướng dẫn xóa hàng (rows) và cột (columns) khỏi pandas DataFrame bằng phương thức drop().

1. Xóa hàng (Rows)

import pandas as pd

# Giả sử file iris.csv có cột Id, SepalLengthCm, ...
data = pd.read_csv("iris.csv", index_col="Id")
print(f"Số hàng ban đầu: {len(data)}")  # 150

# Xóa hàng có index 6, 9, 10
data.drop([6, 9, 10], inplace=True)
print(f"Số hàng sau xóa: {len(data)}")  # 147

# Không inplace (trả về DataFrame mới)
new_data = data.drop([1, 2, 3])
print(f"Original unchanged: {len(data)}, New: {len(new_data)}")

Tham số quan trọng

  • labels: Index/column name(s) cần xóa.
  • axis: 0='index' (hàng, mặc định), 1='columns' (cột).
  • inplace: True=sửa trực tiếp, False=trả về bản copy (mặc định).
  • errors: 'raise' (mặc định, báo lỗi nếu label không tồn tại), 'ignore' (bỏ qua).

2. Xóa cột (Columns)

import pandas as pd

data = pd.read_csv("iris.csv", index_col="Id")
print(f"Cột ban đầu: {list(data.columns)}")  # 5 cột

# Xóa cột SepalWidthCm, PetalLengthCm
data.drop(['SepalWidthCm', 'PetalLengthCm'], axis=1, inplace=True)
# Hoặc: data.drop(columns=['SepalWidthCm', 'PetalLengthCm'], inplace=True)

print(f"Cột sau xóa: {list(data.columns)}")  # 3 cột

3. Xóa theo điều kiện (Conditional Drop)

# Xóa hàng где SepalLengthCm < 5.0
data = data.drop(data[data['SepalLengthCm'] < 5.0].index)

# Xóa cột có tên chứa 'Width'
data = data.drop(columns=[c for c in data.columns if 'Width' in c])

4. Reset Index sau khi xóa hàng

# Index sẽ bị đứt gãy (ví dụ: 1,2,3,5,6... thiếu 4)
data = data.reset_index(drop=True)  # drop=True: không giữ index cũ làm cột
print(data.index.tolist())  # [0, 1, 2, 3, 4, ...]

Lưu ý hiệu năng

  • inplace=True không nhất thiết tiết kiệm bộ nhớ (pandas có thể vẫn copy nội bộ).
  • Xóa nhiều hàng/cột một lần (list) nhanh hơn xóa lần lượt trong loop.
  • Đối với DataFrame lớn, cân nhắc boolean indexing: df = df[~(df.index.isin([6,9,10]))].