假设我有数据帧;
df = pd.DataFrame({'words': ['cat','bat','mat','dog']})
现在,如果我想添加一个新列'avg_difference'
我想将cat与所有其他行的Levenstein距离相加,然后将平均值作为一个新列。将cat的距离及其列中的所有其他单词作为新'avg_distance'
列的行值。
使用可以完成
def lev_dist(string_1,string_2):
'''
This function has code in my implementation and it returns the dist between string1 and 2.
'''
pass
对于两个字符串,但是对于行,我该怎么做呢?
您可以使用jellyfish
的levenshtein
函数:
df['levenshtein'] = df.assign(tmp=df['words'][0]).drop(0, axis=0).apply(lambda x: jellyfish.levenshtein_distance(x['tmp'], x['words']), axis=1)
输出:
>>> df
words levenshtein
0 cat NaN
1 bat 1.0
2 mat 1.0
3 dog 3.0