gpt4 book ai didi

python - 比较列中相同值的行并生成矩阵

转载 作者:太空宇宙 更新时间:2023-11-04 02:12:02 24 4
gpt4 key购买 nike

我有一个如下所示的数据框,我想比较行之间的行。之后它应该计算两行在所有列中的值 1 的频率。

object |A|B|C|D|E
101 1 1 1 1 1
102 1 0 1 0 0
103 0 1 0 1 1

我想看到的(我输入 NaN 是因为将同一行与其自身进行比较没有意义)。

   101 | 102 | 103
101 NaN 2 3
102 2 NaN 0
103 3 0 NaN

现在我只这样做,但那只是针对列,而不是行:

data=pd.DataFrame()#dummy
matrix=data.T.dot(data.T)

最佳答案

你可以用来检查

s=df.iloc[:,1:].values
s.dot(s.T)
Out[308]:
array([[5, 2, 3],
[2, 2, 0],
[3, 0, 3]], dtype=int64)

然后我们重新创建数据框

newdf=pd.DataFrame(s.dot(s.T),index=df.object,columns=df.object)
newdf=newdf.astype(float)
newdf.values[[np.arange(len(newdf))]*2]=np.nan # mask the diagonal to nan
newdf
Out[312]:
object 101 102 103
object
101 NaN 2.0 3.0
102 2.0 NaN 0.0
103 3.0 0.0 NaN

关于python - 比较列中相同值的行并生成矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53529239/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com