вы можете использовать NumPy для этого.
следующий код будет работать
import numpy as np
a = np.zeros((3, 3), int)
np.fill_diagonal(a, [1,2,3])
print(a)
Выход:
array([[1, 0, 0],
[0, 2, 0],
[0, 0, 3]])
Чтобы преобразовать его в фрейм данных, просто сделайте следующее
import pandas as pd
d = pd.DataFrame(a)
print(d)
0 1 2
0 1 0 0
1 0 2 0
2 0 0 3