Giả sử bạn có DataFrame vuông (số hàng = số cột) và muốn gán giá trị 1 cho tất cả phần tử trên đường chéo chính.
Giải pháp
- Tạo DataFrame vuông.
- Duyệt i từ 0 đến n-1, gán
df.iloc[i, i] = 1.
Mã ví dụ
import pandas as pd
import numpy as np
data = [[10,20,30],[40,50,60],[70,80,90]]
df = pd.DataFrame(data)
print("DataFrame gốc:\n", df)
for i in range(len(df)):
df.iloc[i, i] = 1
print("\nSau khi gán đường chéo = 1:\n", df)
Kết quả
DataFrame gốc:
0 1 2
0 10 20 30
1 40 50 60
2 70 80 90
Sau khi gán đường chéo = 1:
0 1 2
0 1 20 30
1 40 1 60
2 70 80 1
Cách khác (vectorized):
import numpy as np df.values[np.arange(len(df)), np.arange(len(df))] = 1
Nhanh hơn cho DataFrame lớn.