我想在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'
答案 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)
我想您会找到想要的东西。