首页 > 解决方案 > Pandas:如何使用 Numpy 函数而不是 Lambda 函数来获得相同的结果(因为 Numpy 更快)?

问题描述

下面的命令给了我以下错误:ValueError:一个系列的真值是不明确的。使用 a.empty、a.bool()、a.item()、a.any() 或 a.all()。

为什么以及如何解决?

df['Score'] = np.array(fuzz.ratio(df['Vendor'], df['Company']))

注意 - 我知道下面的命令有效,但我希望使用 numpy,因为我听说它比 lambda 快得多:

df['Score'] = df['Vendor'].apply(lambda x: fuzz.ratio(x, df['Company']))

谢谢!

标签: pythonpandasnumpyfuzzywuzzy

解决方案


试试这个,它应该和 numpy 语句做同样的事情

df.apply(lambda x: fuzz.ratio(x.Vendor, x.Company), axis=1)

那就是如果 fuzz.ratio 采用不可迭代的。

或许:

np.apply_along_axis(fuzz.ratio, 0, df['Vendor'], df['Company'] ) 

推荐阅读