我有一个带有字母和坐标的数据集“ 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
任何帮助将不胜感激!
答案 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