在Python中计算单词中字母之间的距离

时间:2018-10-02 21:46:56

标签: python python-3.x pandas

我有一个带有字母和坐标的数据集“ sc”。例如,

alphabets   Y   X
q           3   1
w           3   2
e           3   3
r           3   4
t           3   5
y           3   6
u           3   7
i           3   8
o           3   9
...

我有兴趣使用毕达哥拉斯定理来计算单词中连续字母之间的距离。 例如,对于单词“ que”,距离为(6 + 4)= 10。

我已经用python编写了一个代码,但是我的代码运行将近2个小时。我有一个超过50万行的数据集。 P. S.该单词可以是字母数字。

这是我的代码:

def key_score(w):
    score=0
    for i in range(0,len(w)-1):
        t=pd.DataFrame(list(w[i:i+2].lower()))
        t.columns = ['alphabets']
        u = pd.merge(sc, t, how='inner', on=['alphabets'])
        v = np.sqrt(((u['X'][0] - u['X'][1])**2)+((u['Y'][0] - u['Y'][1])**2))
        score = score + v
    return score

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

尝试一下:

df = df.set_index('alphabet') #if alphabet is not in index
word = 'que'
np.sqrt(df.reindex([*word]).diff().abs().sum().pow(2).sum())

输出:

10