我正在读取一个.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')
怎么回事??你知道吗
它说
dtype
是str10
。你知道吗将其转换为64位实数:
正如您在html文件中看到的,应该有918行,但是您得到919行。具有单位定义的行被读取为第一个数据行,它会弄乱所有内容。这就是为什么您将第一个“ra”视为“decimal hr”而不是数字,并且列数据类型推断为dtype='str10'。你知道吗
可以使用“data\u start”参数放弃有问题的行:
现在输入类型被正确地推断出来,用15乘以“ra”应该不会有任何问题。你知道吗
我无法重现您的问题,但我弥补了数据['ra']不包含数字类型。它看起来像一个unicode字符串。你知道吗
如果是这种情况,可以通过在相乘之前显式指定类型来解决:
编辑:好的,那么它包含一个数组,所以您需要以兼容的方式修改类型:
相关问题 更多 >
编程相关推荐