content_array = [tuple(row[:7]) for row in content[1:]] dtype = [('Date', object),('Location', object),('Operator', object),('Type', object),('Aboard', object),('Fatalities', object),('Summary', object)] content_name = np.array(content_array, dtype=dtype)出现作物content_name["Aboard"] = content_name["Aboard"].astype(float) ValueError: could not convert string to float: '-'怎么处理
时间: 2023-07-15 12:13:57 浏览: 86
C++ 中 std::tuple 与 std::pair 的全面解析与应用实践
这个错误是由于 content_name["Aboard"] 中的某些字符串包含了 '-',而无法转换为浮点型。你可以使用 numpy.where() 函数来处理这个问题,将字符串中的 '-' 转换为 '0':
```
import numpy as np
content_array = [tuple(row[:7]) for row in content[1:]]
dtype = [('Date', object),('Location', object),('Operator', object),('Type', object),('Aboard', object),('Fatalities', object),('Summary', object)]
content_name = np.array(content_array, dtype=dtype)
content_name["Aboard"] = np.where(content_name["Aboard"] == '-', '0', content_name["Aboard"]).astype(float)
```
这里使用了 numpy.where() 函数,第一个参数是判断条件,如果为真则返回第二个参数,否则返回第三个参数。所以当 content_name["Aboard"] 中的值为 '-' 时,就返回 '0',否则返回原来的值。最后将结果转换为浮点型即可。
阅读全文