Python 熊猫:如何在CSV中查找引发错误的行;ValueError:无法将字符串转换为浮点值;

Python 熊猫:如何在CSV中查找引发错误的行;ValueError:无法将字符串转换为浮点值;,python,pandas,csv,Python,Pandas,Csv,我正在使用以下命令将CSV导入熊猫数据帧: df=pandas.read_csv("import.csv", names=["Year", "Month", "Day", "Time", "ColA"], encoding='iso-8859-1') 但是,将ColA作为数据类型对象导入 我尝试使用此函数将该列转换为浮点: df['ColA'] = df['ColA'].astype(float) 但是,会出现以下错误: ValueError: could not convert str

我正在使用以下命令将CSV导入熊猫数据帧:

df=pandas.read_csv("import.csv", names=["Year", "Month", "Day", "Time", 
"ColA"], encoding='iso-8859-1')
但是,将ColA作为数据类型对象导入

我尝试使用此函数将该列转换为浮点:

df['ColA'] = df['ColA'].astype(float)
但是,会出现以下错误:

 ValueError: could not convert string to float: 
这限制了我,因为我不能在object类型的列上运行mean、sum等函数(我需要能够运行)。在对象类型的dataframe中的列上运行类似的函数会返回错误:

DataError: No numeric types to aggregate
可乐也含有负数。 现在我想知道如何让Spyder/Python/Pandas告诉我是哪一行引起了错误。换句话说,我如何找出哪一行包含Python解释为字符串的内容

CSV包含数十万行,因此仅通过在Excel中浏览CSV来查找字符串是没有希望的。非常感谢您的建议

编辑

@Jon Clements的以下注释成功地将该列转换为float64类型。 但是,为了处理这些“非数字故障值”,如果Spyder/PythonIDE控制台能够提供这些值,则可以简化查找过程。Python返回引发错误的特定位置是有道理的。此外,它还可以帮助您节省大量查找这些文件的时间,尤其是在处理大型CSV文件时

版本信息:

python: 3.6.3.final.0

python-bits: 64

pandas: 0.20.3

您是否尝试过df['ColA'].astype('float64')

如果不起作用,请尝试:

df.apply(pd.to_numeric)
pd.to_numeric具有关键字参数错误:

arg:对象或序列的列表、元组或数组 错误:{'ignore','raise','concurve',},默认值为'raise'

- If 'raise', then invalid parsing will raise an exception
- If 'coerce', then invalid parsing will be set as NaN
- If 'ignore', then invalid parsing will return the input

你不能做熊猫。到数值(df['ColA',errors='compresse')然后处理NAN吗?尝试了您的建议:pandas.to_numeric(df['ColA',errors='concure'),之后列的数据类型为float64。但是,它仍然会引发错误DataError:No numeric type to aggregateWell yes。。。我希望你能重新分配这个列,或者在数据框中创建一个新的列,并返回它的值……这一次效果很好。然而,我仍然想知道是否有可能知道CSV中哪一行会返回与此相关的错误。假设CSV包含像abcd这样的实际字母,您的方法仍然有效吗?如果是这样的话,如果Pandas能告诉你具体的位置那就太酷了。如果你的索引是从0到N的自动索引(因此它对应于CSV中的行号),那么
df.index[pd.to_numeric(df.ColA,errors='concurve').isna()]
应该这样做。。。(或重新使用现有列作为选择,而不是重新运行它)