You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用DataFrame.drop后使用numpy.sin出现ufunc循环报错如何解决

报错触发原因

  • 核心原因是astype()方法默认不会原地修改DataFrame,你没有将类型转换后的结果重新赋值给对应列或DataFrame变量,导致alpha列实际还是object数据类型,而非你以为的float64。
  • 当你把object类型的Series传给np.sin()时,numpy的通用函数会尝试逐元素调用对应对象的sin方法,但Python原生的float类型并没有内置sin方法,因此触发了类型错误。

解决方法

方法1:修改现有类型转换逻辑,补充赋值

将你的中间调整代码修改为以下内容即可:

data = data.drop([0]).reset_index(drop = True)
# 把转换后的列赋值回原DataFrame
data['alpha'] = data['alpha'].astype('float64')

如果要对多列批量转换也可以写成:

data = data.astype({'alpha': 'float64'})

注意:numpy的sin默认接收的是弧度值,如果你要计算角度的正弦值,需要先把角度转换为弧度:

data['sin'] = np.sin(np.deg2rad(data['alpha']))

方法2:导入Excel时直接处理单位行(更推荐)

你可以在调用pd.read_excel()的时候直接跳过第二行的单位行,同时把表头设为第一行,不需要后续手动删行处理,示例逻辑:

# header=0 代表第一行作为列名,skiprows=[1] 代表跳过第二行(索引从0开始)
data = pd.read_excel('你的文件路径.xlsx', header=0, skiprows=[1])

这种方法导入后所有数据列默认就是数值类型,不需要额外做类型转换。

内容的提问来源于stack exchange,提问作者Magnus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 02:24:04