python - 数据框应用不接受轴参数

标签 python pandas dataframe apply

我有两个数据框:datarules

>>>data                            >>>rules
   vendor                             rule
0  googel                           0 google
1  google                           1 dell
2  googly                           2 macbook

在计算每个供应商和规则之间的 Levenshtein 相似度后,我试图将两个新列添加到 data 数据框中。所以我的数据框最好包含如下所示的列:

>>>data
  vendor   rule    similarity
0 googel   google    0.8

到目前为止,我正在尝试执行一个 apply 函数,它将向我返回此结构,但 dataframe apply 不接受 axis 参数。

>>> for index,r in rules.iterrows():
...     data[['rule','similarity']]=data['vendor'].apply(lambda row:[r[0],ratio(row[0],r[0])],axis=1)
...
Traceback (most recent call last):

File "<stdin>", line 2, in <module>

File "/home/mnnr/test/env/test-1.0/runtime/lib/python3.4/site-packages/pandas/core/series.py", line 2220, in apply
mapped = lib.map_infer(values, f, convert=convert_dtype)
File "pandas/src/inference.pyx", line 1088, in pandas.lib.map_infer (pandas/lib.c:62658)
File "/home/mnnr/test/env/test-1.0/runtime/lib/python3.4/site-packages/pandas/core/series.py", line 2209, in <lambda>
f = lambda x: func(x, *args, **kwds)

TypeError: <lambda>() got an unexpected keyword argument 'axis'

有人可以帮我弄清楚我做错了什么吗?我所做的任何更改只会产生新的错误。谢谢

最佳答案

您正在调用 applySeries 版本对于它没有意义的 axis arg 因此错误。

如果你这样做了:

data[['rule','similarity']]=data[['vendor']].apply(lambda row:[r[0],ratio(row[0],r[0])],axis=1)

然后这会生成一个单独的 df 列

或者只是删除 axis 参数:

data[['rule','similarity']]=data['vendor'].apply(lambda row:[r[0],ratio(row[0],r[0])])

更新

看看您在做什么,您需要针对每个供应商计算每个规则的编辑比率。

您可以通过以下方式做到这一点:

data['vendor'].apply(lambda row: rules['rule'].apply(lambda x: ratio(x, row))

我认为这应该根据每个规则计算每个供应商的比率。

关于python - 数据框应用不接受轴参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45878720/

相关文章:

python - 属性错误: 'BoxesView' object has no attribute 'object_list'

检索数据框中两列中重复次数最多的 (x, y) 值

python - 尝试导入测试床时出错

python - 如何在pandas python中转换列中的行并执行操作

python - 如何计算数据框中每篇文章的段落数?

python - 带有赋值的 Pandas bool 过滤器导致 NaN

python - pandas.Panel 弃用警告实际推荐的是什么?

python - 时间序列 Pandas 的滚动平均值

Python:如何在函数的本地范围内运行 eval()

python - 如何将本地 django 制作的站点移动到另一台机器上?