用数据框中的给定行索引替换列和行中的值

时间:2020-05-05 14:36:40

标签: python pandas

我有一个包含网址和经过验证的网址的数据框,并添加了一个具有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列中的值?

1 个答案:

答案 0 :(得分:1)

尝试对数据框使用.apply

df['lev_ratio'] = df.apply(lambda x: lev.ratio(str(x.url),str(x.url_ok2)), axis=1)