首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas:值上的矩阵计算

Pandas:值上的矩阵计算
EN

Stack Overflow用户
提问于 2014-09-18 16:38:59
回答 1查看 149关注 0票数 1

我有这样的数据帧:

代码语言:javascript
复制
        apple aple  apply
apple     0     0      0
aple      0     0      0
apply     0     0      0

我想要计算字符串距离,例如apple、->、aple等。我的最终结果是:

代码语言:javascript
复制
        apple aple  apply
apple     0     32     14
aple      32    0      30
apply     14    30     0

目前,这是我正在使用的代码(但它对于大数据来说非常慢):

代码语言:javascript
复制
columns = df.columns
for r in columns:
  for c in columns:
     m[r][c] = Simhash(r).distance(Simhash(c)) 

有人能帮我有效地计算距离吗?

EN

回答 1

Stack Overflow用户

发布于 2014-09-19 03:13:25

有一个想法--由于输出是对称的,通过迭代每一对,你就可以计算每一对两次。此外,您还可以跳过元素与其自身之间的比较。因此,为了至少减少计算次数,您可以这样做-使用itertools仅计算成对的距离,然后使用pandas填充其余部分。

代码语言:javascript
复制
from itertools import combinations
from collections import defaultdict

data = df.index

output = defaultdict(dict)

for a,b in combinations(data, 2):
    output[a][b] = Simhash(a).distance(Simhash(b))
for a in data:
    output[a][a] = 0

df = pd.DataFrame(output)

df = df.fillna(df.T)

你必须在一个更大的框架上测试,但我认为它会比你正在做的事情更快,并且应该给出相同的答案。

代码语言:javascript
复制
In [84]: df
Out[84]: 
       aple  apple  apply
aple      0     32     30
apple    32      0     14
apply    30     14      0
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25907936

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档