python - 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']))
谢谢!
解决方案
试试这个,它应该和 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'] )
推荐阅读
- python - 快速将东向和北向转换为大型 DataFrame 位置的纬度和经度
- log4j - 由于 log4j 阻塞 - org.apache.logging.log4j.core.layout.TextEncoderHelper.copyDataToDestination
- c++ - 检查GTK窗口是否有键盘和鼠标焦点窗口C++
- php - 无法按属性名称对对象数组进行排序
- javascript - Jquery:无法将输入值设置为表 td
- javascript - 推送通知的firebase云功能不起作用
- laravel - Laravel 应用程序托管在 IIS Windows 10 上,我如何在另一台 PC 上访问?
- android - CollapsingToolbarLayout 隐藏了我的后退按钮
- python - 使用 Pandas 读取 csv 时间数据时数据类型不一致
- php - 社交名流 (SSO) 登录后如何为我的 API 获取 Passport 访问/刷新令牌