如何使用自定义函数过滤Pandas DataFrame及TypeError报错处理
Pandas自定义布尔函数过滤DataFrame报错修复方案
故障根因
你传入is_there_surebet的第一个参数df['Contenido']是Pandas的Series对象(整列数据),而你的自定义函数默认是接收两个单个标量值做逻辑判断返回布尔值,内部逻辑(比如做数值计算、类型转换)无法处理整列Series,因此触发类型转换报错。
是否需要提供函数实现?
大部分场景下不需要,仅当你按下方方案修复后依然报错时,才需要提供函数实现排查内部逻辑问题。
修复方案
快速修复
将报错行替换为apply逐行调用自定义函数即可,apply会把每一行的Contenido单个值传入函数,返回布尔值组成的Series,可直接用于过滤:
(df['Contenido'].apply(lambda x: is_there_surebet(x, df.loc[i]['Contenido'])))
性能优化建议
你当前倒序循环逐行删除原DataFrame的写法性能极低,数据量超过1万行时耗时会非常高。可以替换为groupby分组处理逻辑:先按Fecha、Mercado字段分组,再在每个分组内做内容匹配判断,效率能提升数十倍。
内容的提问来源于stack exchange,提问作者Juan José Campos
相关产品推荐
相关产品推荐

