使用fill_diagonal()在pandas.DataFrame的对角线上设置值

时间:2018-10-11 08:25:18

标签: python pandas numpy dataframe

我想在pandas.df中设置对角线的值。我按照Set values on the diagonal of pandas.DataFrame

的回答

df.values[[np.arange(df.shape[0])] * 2] = 0的解决方案很好。

但是我希望使用np.fill_diagonal(df.values, 0)来赋予AttributeError:'DataFrame'对象没有属性'flat'

1 个答案:

答案 0 :(得分:0)

我也有这个问题,但是当我意识到np.fill_diagonal() works in-place时就解决了。

np.fill_diagonal(df,0)给了我您描述的AttributeError:np.fill_diagonal(df.values,0)返回了None,所以如果您执行以下操作:

df_zeros = np.fill_diagonal(df.values,0)
print(df_zeros)

或尝试在其他地方使用结果将不起作用,但如果您这样做:

np.fill_diagonal(df.values,0)
print(df)

我想您会找到想要的东西。