例如,我有一个数据帧,它有5行5列。有相同的名字。例如:
... A B C D E
A 0 0 0 0 0
B 0 0 0 0 0
C 0 0 0 0 0
D 0 0 0 0 0
E 0 0 0 0 0
如何通过我的数据框循环来比较列名和行名,以便将col和行名相等的值设置为1。
... A B C D E
A 1 0 0 0 0
B 0 1 0 0 0
C 0 0 1 0 0
D 0 0 0 1 0
E 0 0 0 0 1
答案 0 :(得分:2)
您可以使用numpy.fill_diagonal
作为dataframe的值:
proxies = {'http://10.20.1.128': 'http://10.10.1.10:5323'}
修改强>
如果您需要填充行和列索引相同的值,您可以使用切割对角线的值,并将其分配给它,并随意分配给它:
import numpy as np
import pandas as pd
df = pd.DataFrame(np.zeros((5,5)), columns=list('ABCDE'), index=list("ABCDE"))
In [37]: np.fill_diagonal(df.values, 1)
In [38]: df
Out[38]:
A B C D E
A 1 0 0 0 0
B 0 1 0 0 0
C 0 0 1 0 0
D 0 0 0 1 0
E 0 0 0 0 1
答案 1 :(得分:1)
或者,如果您的行和列未订购:
df.apply(lambda row: row.index == row.name, axis=1).astype(int)
最后的.astype(int)
将布尔值转换为整数。