Pandas调用mean报int与str不兼容及Series无to_numeric属性如何解决
问题原因
TypeError: unsupported operand type(s) for +: 'int' and 'str'报错原因:str.extract()提取返回的结果默认为字符串类型,你后续用fillna(0)填充的是整数类型,导致add-revised列混合了字符串、整数两类数据类型,计算均值时无法执行算术运算。AttributeError: 'Series' object has no attribute 'to_numeric'报错原因:to_numeric()是Pandas的顶层工具函数,不属于Series对象的内置方法,不能直接通过Series调用。
解决方法
方案1:对现有列做类型转换
直接调用Pandas顶层的to_numeric方法完成类型转换即可:
import pandas as pd # 统一转换为数值类型 df_new['add-revised'] = pd.to_numeric(df_new['add-revised']) # 再计算均值即可正常返回结果 df_new['add-revised'].mean()
方案2:优化原始生成逻辑,从根源避免类型问题
生成add-revised列时直接完成类型转换,后续无需额外处理:
# extract加expand=False返回Series,直接传入to_numeric转换为数值类型,无匹配值自动设为NaN df['add-revised'] = pd.to_numeric(df.addition.str.extract('(\d+)', expand=False)) # 填充NaN为0,此时整列均为数值类型 df['add-revised'] = df['add-revised'].fillna(0)
内容的提问来源于stack exchange,提问作者nerd_gram
相关产品推荐
相关产品推荐

