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

Tạo bảng chéo (cross-tabulation) từ hai DataFrame trong Python

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 cho columns để tạo MultiIndex cột.