Pandas DataFrame là cấu trúc dữ liệu 2 chiều (bảng). Bài này hướng dẫn thêm cột mới vào DataFrame hiện có.
Tạo DataFrame ban đầu
import pandas as pd s = pd.Series([6, 8, 3, 1, 12]) df = pd.DataFrame(s, columns=['Month_No']) print(df)
Kết quả
Month_No 0 6 1 8 2 3 3 1 4 12
Cách 1: insert() - Thêm cột tại vị trí cụ thể
df.insert(1, "No_of_days", [30, 31, 31, 31, 31], allow_duplicates=False) print(df)
Kết quả
Month_No No_of_days 0 6 30 1 8 31 2 3 31 3 1 31 4 12 31
insert(loc, column, value): loc = index vị trí chèn. Sửa đổi in-place.
Cách 2: assign() - Tạo DataFrame mới với cột thêm
df = pd.DataFrame(s, columns=['Month_No']) df = df.assign(No_of_days=[30, 31, 31, 31, 31]) print(df)
Kết quả
Month_No No_of_days 0 6 30 1 8 31 2 3 31 3 1 31 4 12 31
assign() trả về DataFrame mới, không sửa đổi gốc (functional style).
Cách 3: Gán trực tiếp (Phổ biến nhất)
df['No_of_days'] = [30, 31, 31, 31, 31] # Hoặc từ Series df['No_of_days'] = pd.Series([30, 31, 31, 31, 31], index=df.index)
Cách 4: Dùng phép toán trên cột hiện có
df['Qty_doubled'] = df['Qty'] * 2 df['Is_high'] = df['Qty'] > 5
So sánh
| Phương pháp | In-place? | Vị trí tùy chỉnh? | Trường hợp dùng |
|---|---|---|---|
| df['col'] = ... | Có | Không (luôn cuối) | Phổ biến nhất, đơn giản |
| insert() | Có | Có | Cần kiểm soát thứ tự cột |
| assign() | Không | Không (luôn cuối) | Chuỗi xử lý (method chaining), functional |