我一直在努力解决这个问题。我终于找到了它发生但却找不到解决方案的原因。
我正在导入从Web上的不同资源中删除的data.csv。它们的MOst是字符串,需要剥离,例如“%”。这就像使用自定义转换器的魅力。
但是只要列包含带“ - ”(无值)的行,它就会在convert_percentage返回float(new_val)中给出错误“File”D:test.py“,第14行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,
})
我建议你这样做:
def convert_percentage(val):
new_val = val.replace(',','').replace('%', '')
try:
return float(new_val)
except ValueError:
return new_val
显然,您可以根据要返回的内容添加更多回报。如果您认为每次都要检查if,请进行有条件的退货。但如果错误是例外(统计上讲),try/except
块是最好的选择