pandas read_csv 并将 na_values 设置为 csv 文件中的任何字符串

pandas read_csv and setting na_values to any string in the csv file

data.csv

1, 22, 3432

1, 23, \N

2, 24, 54335

2, 25, 3928

我有一个从设备收集的数据的 csv 文件。设备不时不中继信息并输出“\N”。我想将它们视为 NaN 并通过

read_csv(data.csv, na_values=['\N']) 

效果很好。但是,我更希望不仅将此字符串转换为 NaN,而且将 csv 文件中的任何字符串转换为以防万一我将来获得的数据具有不同的字符串。

我可以对参数进行任何更改以覆盖所有字符串吗?

您必须手动将所有关键字作为列表或字典传递给 na_values

na_values : list-like or dict, default None

或者,使用 pd.to_numeric 并将错误设置为 coerce,以便在读取 csv 文件后将所有值转换为数字。

样本输入df:

    A   B        
0   1   2         
1   0  \N      
2  \N   8       
3  11   5       
4  11  Kud   

df = df.apply(pd.to_numeric, errors='coerce')

输出:

     A     B        
0    1     2         
1    0   NaN      
2  NaN     8       
3   11     5       
4   11   NaN