Giả sử bạn có hai DataFrame và muốn tạo bảng chéo (crosstab) giữa cột 'Id' của df1 và các cột 'Age' của df1 cùng 'Mark' của df2.
Giải pháp
- Tạo hai DataFrame: df1 (Id, Age), df2 (Mark).
- Sử dụng
pd.crosstab(index=df['Id'], columns=[df['Age'], df1['Mark']]).
Mã ví dụ
import pandas as pd
df = pd.DataFrame({'Id': [1,2,3,4,5], 'Age': [12,13,12,13,14]})
df1 = pd.DataFrame({'Mark': [80,90,80,90,85]})
print("DataFrame 1:\n", df)
print("\nDataFrame 2:\n", df1)
print("\nCross-tabulation:")
print(pd.crosstab(index=df['Id'], columns=[df['Age'], df1['Mark']]))
Kết quả
DataFrame 1: Id Age 0 1 12 1 2 13 2 3 12 3 4 13 4 5 14 DataFrame 2: Mark 0 80 1 90 2 80 3 90 4 85 Cross-tabulation: Age 12 13 14 Mark 80 90 85 Id 1 1 0 0 2 0 1 0 3 1 0 0 4 0 1 0 5 0 0 1
Giải thích:
- Bảng chéo đếm tần suất xuất hiện của các tổ hợp (Age, Mark) cho mỗi Id.
- Ví dụ: Id=1 có Age=12, Mark=80 → ô (12,80) dòng Id=1 giá trị 1.
pd.crosstab()chấp nhận nhiều cột chocolumnsđể tạo MultiIndex cột.