python - 乘以 Python MaskedColumn
问题描述
我正在读取 .html 数据文件,我想做的就是将 data['ra'] 列乘以 15。但是,我收到一个错误::
>>> data = ascii.read("Ldwarf.html", format="html", encoding = "ISO-8859-1")
>>> data
<Table masked=True length=919>
designation ra decl
2MASS J00011217+1535355 0.0200472 +15.593194
2MASS J00025097+2454141 0.0474917 +24.903917
2MASS J00040288-6410358 0.0674667 -64.176611
和
>>> data['ra']
<MaskedColumn name='ra' dtype='str10' length=919>
decimal hr
0.0200472
0.0474917
...
23.9783250
23.9993389
>>> data['ra'] = data['ra'].filled([-9.99])
>>> data['ra'] = data['ra']*15.
TypeError: ufunc 'multiply' did not contain a loop with signature matching
types dtype('<U32') dtype('<U32') dtype('<U32')
到底是怎么回事??
解决方案
正如您在 html 文件中看到的那样,应该有 918 行,但您得到了 919。具有单位定义的行被读取为第一个数据行,它把所有东西都弄乱了。这就是为什么您将第一个“ra”视为“十进制 hr”而不是数字,并且列数据类型被推断为 dtype='str10'。
您可以使用“data_start”参数丢弃有问题的行:
data = ascii.read("Ldwarf.html",
format="html",
encoding="ISO-8859-1",
data_start=2)
现在可以正确推断输入类型,将“ra”乘以 15 应该没有任何问题。
推荐阅读
- php - 如何为 MockHttpClient 创建带有 statusCode 400 标头的 MockResponse?
- jquery - jQuery的remove()函数不工作不删除span标签
- android - Kotlin:将 UI 从英语翻译成法语
- php - 随机 WordPress 未定义变量
- javascript - 简单的问题,新学生做练习课程。(JavaScript)
- r - 使用 R 和 API 提取多个股市数据
- sanity - 如何通过 HTTP 从 Sanity 下载文件?
- excel - 如何在excel中具有决胜局的组中排名
- mqtt-vernemq - VERNEMQ 使用 SQL Server 进行身份验证
- amazon-dynamodb - 使用无服务器框架为 dynamodb 设置复合排序键