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

2024-04-26 21:29:46 发布

您现在位置:Python中文网/ 问答频道 /正文

有一个csv文件,包含数字,“**”,“(X)”和NAN。 然后我用pd.read\U csv文件()将此导入数据帧。 见:import data

但df中的所有值都是“str”类型。见:desc data

我想过滤num并把它们转换成float类型,其他的转换成NAN。 请帮帮我。谢谢!你知道吗


Tags: 文件csv数据import类型dfreaddata
1条回答
网友
1楼 · 发布于 2024-04-26 21:29:46

尝试使用NaNpd.read_csv()过滤器。对于每一列,您可以指定应被视为NaN的不同值。在您的情况下,这应该起作用:

df = pd.read_csv('your_file.csv', na_values={'HC04_VC03': '(X)', 'HC04_VC04': '***'})

熊猫将自动为您的数据选择合适的数据类型。在本例中,您将获得所需的浮点列。您还可以使用参数dtype = {'GEO.id2': np.int64, 'HC04_VC04': np.float64, 'HC02_VC05': np.float64}或您选择的任何其他有效数据类型指定在csv文件中读取的数据类型。请小心使用此选项,因为如果无法将数据转换为所需的类型(例如,如果不首先删除所有'***'字符串),则设置数据类型将引发错误。你知道吗

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

df['GEO.id2'] = pd.to_numeric(df['GEO.id2'], errors = 'ignore') # values that can't be converted to integer types will be left alone

在文档中,还有其他处理无法转换的数据的方法。你知道吗

相关问题 更多 >