2016-08-05 107 views
2

我有一个二进制值的数据帧。我想将值更改为零,其中行和列名称相同。什么是最简单的方法来做到这一点?在这里替换数据帧中的值rowname等于列名

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 
+1

我的实际数据帧没有同一个序列中的行和列。亚历山大的解决方案对我更好。 – Rtut

回答

2

您可以通过列循环和相应的行(或多个)设置为零使用loc

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