有一个csv文件,其中包含数字“ ***”,“(X)”和NAN。 然后,我使用pd.read_csv()将其导入到数据框中。 参见:import data
,但df中的所有值均为“ str”类型。参见:desc data
我想过滤num并将其转换为float类型,其他转换为NAN。 请帮我。谢谢!
答案 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之后转换列。例如,
'***'
在文档中,还有其他方法可以处理无法转换的数据。