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=Truekhô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]))].