我一直在努力解决这个问题。我终于找到了发生这种情况的原因,但仍未找到解决方案。
我正在导入从网络上的其他资源中抓取的data.csv。它们的大部分是字符串,需要除去,例如“%”。使用自定义转换器时,它的工作原理就像一种魅力。
但是,只要一列包含带有“-”(无值)的行,它就会在convert_percentage中出现错误“文件“ D:test.py”,第14行 返回float(new_val)ValueError:无法将字符串转换为float:'-'“
我正在使用以下代码行:
import pandas as pd
import numpy as np
def convert_percentage(val):
new_val = val.replace(',','').replace('%', '')
return float(new_val)
df = pd.read_csv('data.csv', na_values=['-'],
converters={
'Perf Month': convert_percentage,
'Perf Week': convert_percentage,
'Perf Quarter': convert_percentage,
'Perf Half Y': convert_percentage,
'Payout': convert_percentage,
})
答案 0 :(得分:0)
我建议您这样做:
def convert_percentage(val):
new_val = val.replace(',','').replace('%', '')
try:
return float(new_val)
except ValueError:
return new_val
显然,您可以根据要退回的商品添加更多退货。如果您认为应该每次检查if,请有条件返回。但是,如果错误异常(从统计角度而言),则try/except
块是最佳选择。