如何清除数据帧的脏数据(从csv文件导入),过滤nums并转换为float类型

时间:2019-02-06 16:27:00

标签: python pandas dataframe

有一个csv文件,其中包含数字“ ***”,“(X)”和NAN。 然后,我使用pd.read_csv()将其导入到数据框中。 参见:import data

,但df中的所有值均为“ str”类型。参见:desc data

我想过滤num并将其转换为float类型,其他转换为NAN。 请帮我。谢谢!

1 个答案:

答案 0 :(得分:1)

尝试使用NaN的{​​{1}}过滤器。对于每一列,您可以指定应视为NaN的不同值。在您的情况下,这应该可行:

pd.read_csv()

然后,Pandas将自动为您的数据选择合适的dtype。在这种情况下,您将获得所需的浮点列。您还可以使用参数df = pd.read_csv('your_file.csv', na_values={'HC04_VC03': '(X)', 'HC04_VC04': '***'}) 或您选择的任何其他有效dtypes来指定在csv文件中读取数据的类型。请谨慎使用此选项,因为如果无法将数据转换为所需的类型,则设置dtype会引发错误。如果您没有先摆脱所有dtype = {'GEO.id2': np.int64, 'HC04_VC04': np.float64, 'HC02_VC05': np.float64}的字符串。

或者,您可以在不指定数据类型的情况下读取csv文件,然后在使用pd.to_numeric之后转换列。例如,

'***'

在文档中,还有其他方法可以处理无法转换的数据。