forループを使用してデータフレーム内のレーベンシュタイン距離を計算しようとしています。
df2_2=df2_1[['Concat','Count','ffour']].copy()
for a in df2_2['Concat'].unique():
dw2_2=df2_2[df2_2['Concat']==a]
vv = dw2_2.iloc[:, 1::2].values
iRow, iCol = np.unravel_index(vv.argmax(), vv.shape)
iCol = iCol * 2 + 1
result = dw2_2.iloc[iRow, [0, iCol, iCol + 1]]
b=result.copy()
b=b.drop(labels=['Concat','Count'])
print (b)
b=b.astype(str)
for a1 in df2_2['ffour'].unique():
dw2_1=df2_2[df2_2['ffour']==a1]
c= dw2_1['ffour'].copy()
print (c)
c=c.astype(str)
for i in range (len(b)):
distance=lev.distance(b,c)
print (distance)
ratio=lev.ratio(b,c)
print (ratio)
これでエラーが発生します
File "<ipython-input-129-15900bf3d493>", line 17, in <module>
distance=lev.distance(b,c)
TypeError: distance expected two Strings or two Unicodes
これについて助けが必要です。
私は、あなたは、両方の値をチェックすることをお勧めしますb
とc
。あなたはいつでもただ使うことができますstr(b)
、str(c)
そしてそれはトリックをするかもしれません。
そのように:
distance=lev.distance(str(b),str(c))
または、列のすべての値にstr()を適用して、Concat
文字列のみが含まれるようにすることもできます。
df2_2['Concat'] = df2_2['Concat'].map(lambda x: str(x))
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加