Pandas,如何将同一列中一行的值与其他行的值进行比较,并将其作为新行值添加到新列中



假设我有数据帧;

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

对于两个字符串,但是对于行,我该怎么做呢?

您可以使用jellyfishlevenshtein函数:

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

最新更新