鉴于一个带有索引的熊猫系列:
import pandas as pd
s = pd.Series(data=[1,2,3],index=['a','b','c'])
如何使用系列来填充pandas版本> = 0.23.0中空数据框架的对角线条目?
生成的DataFrame看起来像:
a b c
a 1 0 0
b 0 2 0
c 0 0 3
有一个a prior similar question将填充对角线相同的值,我的问题是要求用一系列不同的值填充对角线.
提前感谢您的考虑和回应.
最佳答案 首先创建DataFrame,然后创建
numpy.fill_diagonal
:
import numpy as np
s = pd.Series(data=[1,2,3],index=['a','b','c'])
df = pd.DataFrame(0, index=s.index, columns=s.index, dtype=s.dtype)
np.fill_diagonal(df.values, s)
print (df)
a b c
a 1 0 0
b 0 2 0
c 0 0 3
另一种解决方案是创建空的2d数组,向对角线添加值,最后使用DataFrame构造函数:
arr = np.zeros((len(s), len(s)), dtype=s.dtype)
np.fill_diagonal(arr, s)
print (arr)
[[1 0 0]
[0 2 0]
[0 0 3]]
df = pd.DataFrame(arr, index=s.index, columns=s.index)
print (df)
a b c
a 1 0 0
b 0 2 0
c 0 0 3