Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何计算两列之间的模糊比率?_Python_Pandas_Numpy_Data Science - Fatal编程技术网

Python 如何计算两列之间的模糊比率?

Python 如何计算两列之间的模糊比率?,python,pandas,numpy,data-science,Python,Pandas,Numpy,Data Science,从熊猫开始 I have two columns: A B Something Something Else Everything Evythn Someone Cat Everyone Evr1 我想计算两列之间每一行的模糊比率,因此输出如下: A B Ratio Somethin

从熊猫开始

I have two columns:
A                     B
Something             Something Else
Everything            Evythn
Someone               Cat
Everyone              Evr1
我想计算两列之间每一行的模糊比率,因此输出如下:

A                     B                  Ratio
Something             Something Else     12
Everything            Evythn             14
Someone               Cat                10
Everyone              Evr1               20
我怎样才能做到这一点?两列在同一个df中。

使用lambda函数:

编辑:

如果可能,列中缺少一些值,则失败,因此添加:

将lambda函数用于:

编辑:

如果可能,列中缺少一些值,则失败,因此添加:


首先,如何计算两个字符串之间的模糊比率?首先,如何计算两个字符串之间的模糊比率?类型为float的对象为no len()。当我将A和B替换为df@balkotdude你能试试df['Ratio']=df吗。dropna(子集=['A','B'])。应用(lambda x:fuzz.ratio(x.A,x.B),axis=1)?类型为float的对象为no len()。当我将A和B替换为df@balkotdude你能试试df['Ratio']=df吗。dropna(子集=['A','B'])。应用(lambda x:fuzz.ratio(x.A,x.B),axis=1)?
from fuzzywuzzy import fuzz

df['Ratio'] = df.apply(lambda x: fuzz.ratio(x.A, x.B), axis=1)
#alternative  with list comprehension
#df['Ratio'] = [fuzz.ratio(a, b) for a,b in zip(df.A, df.B)]
print (df)
            A               B  Ratio
0   Something  Something Else     78
1  Everything          Evythn     75
2     Someone             Cat      0
3    Everyone            Evr1     50
print (df)
            A               B
0   Something  Something Else
1  Everything             NaN
2     Someone             Cat
3    Everyone            Evr1

from fuzzywuzzy import fuzz

df['Ratio'] = df.dropna(subset=['A', 'B']).apply(lambda x: fuzz.ratio(x.A, x.B), axis=1)
print (df)
            A               B  Ratio
0   Something  Something Else   78.0
1  Everything             NaN    NaN
2     Someone             Cat    0.0
3    Everyone            Evr1   50.0