我有一个由两列字符串组成的pandas DataFrame。我想创建一个包含两列编辑距离的第三列。
from nltk.metrics import edit_distance
df['edit'] = edit_distance(df['column1'], df['column2'])
出于某种原因,这似乎在某种意义上会出现某种无限循环,因为它在相当长的一段时间内仍然没有响应,然后我必须手动终止它。
欢迎任何建议。
答案 0 :(得分:7)
nltk的type Depth struct {
XXX XXX `json:"xxx_xxx"`
}
type XXX struct {
Asks []Nums `json:"asks"`
Bids []Nums `json:"bids"`
}
type Nums []float64
func (n Nums) One() float64 {
if len(n) > 0 {
return n[0]
}
return 0
}
func (n Nums) Two() float64 {
if len(n) > 1 {
return n[1]
}
return 0
}
函数用于比较字符串对。如果你想计算相应字符串对之间的编辑距离,edit_distance
将它分别计算到每一行的字符串,如下所示:
apply
或者像这样(可能效率更高一些),避免包含数据帧的不相关列:
results = df.apply(lambda x: edit_distance(x["column1"], x["column2"]), axis=1)
要将结果添加到数据框中,您可以像这样使用它:
results = df.loc[:, ["column1", "column2"]].apply(lambda x: edit_distance(*x), axis=1)