【发布时间】:2021-10-28 22:00:45
【问题描述】:
简介
我的代码应该从 .xlsx 文件中导入数据并以此为基础进行计算。问题在于每列的单位保存在工作表的第二行,并作为数据列的第一个条目导入。结果是这样的:
import pandas as pd
import numpy as np
data = pd.DataFrame(data = {'alpha' : ['[°]', 180, 180, 180]})
data['sin'] = np.sin(data['alpha'])
问题
因为第一个单元格是str类型,所以列变成object类型。我想我可以通过在两行之间添加以下代码来重新排列数据框来解决这个问题:
data = data.drop([0]).reset_index(drop = True)
data.astype({'alpha' : 'float64'})
数据框现在看起来像我想要的那样,我想它应该可以作为意图工作,但是我得到了一个 AttributeError 和一个 TypeError:
AttributeError: 'float' object has no attribute 'sin'TypeError: ufunc 循环不支持 float 类型的参数 0,它没有可调用的 sin 方法
TypeError: ufunc 循环不支持 float 类型的参数 0,它没有可调用的 sin 方法
任何关于我为什么会收到这些错误以及如何解决它们的见解将不胜感激!
【问题讨论】:
-
data['alpha'] = pd.to_numeric(data['alpha'], errors='coerce'). -
“关于我为什么会出现这些错误的任何见解...” 请参阅stackoverflow.com/questions/47208473/…(将
numpy.log10替换为numpy.sin);那里的解决方案或@QuangHoang 的评论和答案提供了避免错误的方法。 -
@WarrenWeckesser 非常感谢,这真的很有帮助!很好地解释了这个问题!
标签: python pandas dataframe numpy