Python 使用fill_diagonal()在pandas.DataFrame的对角线上设置值
我想在pandas.df中设置数字的值。我跟着答案走了进去Python 使用fill_diagonal()在pandas.DataFrame的对角线上设置值,python,pandas,numpy,dataframe,Python,Pandas,Numpy,Dataframe,我想在pandas.df中设置数字的值。我跟着答案走了进去 df.values[[np.arange(df.shape[0])]*2]=0的解决方案很好 但我希望使用np.fill_diagonal(df.values,0)这会给出AttributeError:“DataFrame”对象没有属性“flat”我也遇到过这个问题,但当我意识到np.fill_diagonal()时解决了这个问题 np.fill\u diagonal(df,0)给了我您描述的属性错误:并且np.fill\u diago
df.values[[np.arange(df.shape[0])]*2]=0
的解决方案很好
但我希望使用
np.fill_diagonal(df.values,0)
这会给出AttributeError:“DataFrame”对象没有属性“flat”我也遇到过这个问题,但当我意识到np.fill_diagonal()
时解决了这个问题
np.fill\u diagonal(df,0)
给了我您描述的属性错误:
并且np.fill\u diagonal(df.values,0)
返回None
因此如果您执行以下操作:
df_zeros = np.fill_diagonal(df.values,0)
print(df_zeros)
或者尝试在其他地方使用结果,但如果您这样做:
np.fill_diagonal(df.values,0)
print(df)
我想你会看到你在寻找什么。对我来说,它与样本数据一起工作得很好
df=pd.DataFrame(np.random.rand(5,5))
,你的pandas版本是什么?0.22.0,我将尝试升级,看看它是否解决了问题。我只是检查了链接的解决方案,并在2014年工作,所以问题是其他的:(我无法升级到pandas 0.23.4,因为我不是这台计算机的管理员。Pyton3只安装在我的用户上,而不是作为管理员安装,这会导致问题吗?尝试使用您的示例数据df=pd.DataFrame(np.random.rand(5,5))
,我仍然收到该错误