This question already has an answer here:
Pandas Dataframe, change values on “diagonal” (where index-value is equal to column-name)
                                
                                    (1个答案)
                                
                        
                                3年前关闭。
            
                    
我有一个带有二进制值的数据框。我想将行和列名称相同的值更改为零。最简单的方法是什么?

tmp_dict= {'x':[0,0,0,0,0],'y':[1,0,1,0,0],'z':[1,1,1,1,1],'p':[0,1,1,0,1],'q':[0,1,1,1,1]}
mydf= pd.DataFrame(tmp_dict, columns=['x','y','z','p','q'], index=['x','y','z','p','q'])
mydf
   x  y  z  p  q
x  0  1  1  0  0
y  0  0  1  1  1
z  0  1  1  1  1
p  0  0  1  0  1
q  0  0  1  1  1


所需的数据框:

   x  y  z  p  q
x  0  1  1  0  0
y  0  0  1  1  1
z  0  1  0  1  1
p  0  0  1  0  1
q  0  0  1  1  0

最佳答案

您可以循环浏览各列,并使用loc将相应的行设置为零。

for col in mydf:
    mydf.loc[col, col] = 0

关于python - 在这里替换数据框中的值,行名等于列名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38794169/

10-16 18:22