我有一个包含网址和经过验证的网址的数据框,并添加了一个具有levenstein比率的列,用于比较每一行的两种网址。
这是我的熊猫数据框的一个示例:
url url_ok2
13 10hanover.org/ NaN
15 111140.cevadosite.com/ aerorealestate.net/
42 18brownlow.com/ 18brownlow.com:443/
57 1granary.com/ 1granary.com/journal/
61 1rs.org.uk/ 1rs.io/
79 2020visionnetwork.eu/ network.crowdhelix.com/
这是我的剧本:
import Levenshtein as lev
to_test['lev_ratio'] = None
for i in range(to_test.shape[0]):
to_test.iloc[i]['lev_ratio'] = lev.ratio(str(to_test.iloc[i].url),str(to_test.iloc[i].url_ok2))
但是这些值不会被替换,请在运行脚本后查看数据框: url url_ok2 lev_ratio 13 10hanover.org/ NaN无 15 111140.cevadosite.com/ aerorealestate.net/无 42 18brownlow.com/ 18brownlow.com:443/无 57 1granary.com/ 1granary.com/journal/无 61 1rs.org.uk/ 1rs.io/无 79 2020visionnetwork.eu/ network.crowdhelix.com/无
但是当我检查lev.ratio(str(to_test.iloc [i] .url),str(to_test.iloc [i] .url_ok2))时,它给了我相应的值,即lev.ratio(str(to_test.iloc[0].url),str(to_test.iloc[0].url_ok2))
返回
0.45454545454545453
如何替换每行lev_ratio列中的值?
答案 0 :(得分:1)
尝试对数据框使用.apply
:
df['lev_ratio'] = df.apply(lambda x: lev.ratio(str(x.url),str(x.url_ok2)), axis=1)