使用Pandas生成列公式时遇ufunc循环错误:str类型无sqrt方法
问题解决:DataFrame中平方根运算报错处理
报错翻译
错误:ufunc的循环不支持类型为str的参数0,该类型没有可调用的sqrt方法
问题原因
你把Grid Spacing(m)列初始化为空字符串,导致该列数据类型为字符串(str),而np.sqrt仅支持数值类型(int/float)的计算,因此触发报错。
解决方案
先确保目标列是数值类型
如果是刚初始化列,不要用空字符串,改用数值型空值:ufo['Grid Spacing(m)'] = np.nan如果列中已有字符串格式的数值,先转换类型(无法转换的内容会被转为NaN):
import pandas as pd ufo['Grid Spacing(m)'] = pd.to_numeric(ufo['Grid Spacing(m)'], errors='coerce')高效计算Area列
无需使用apply逐行处理,直接对整列调用np.sqrt再乘以系数,效率更高:ufo['Area'] = np.sqrt(ufo['Grid Spacing(m)']) * 0.866可选:处理NaN值
如果计算后出现NaN,可根据需求填充默认值:ufo['Area'] = ufo['Area'].fillna(0)
内容的提问来源于stack exchange,提问作者Unnimaya
相关产品推荐
相关产品推荐

