如何将 read_csv 中的非数字条目转换为 NaN

Rap*_*ael 2 python csv nan converters pandas

我正在读取一个文件:

pd.read_csv("file.csv", dtype={'ID_1':float})
Run Code Online (Sandbox Code Playgroud)

该文件如下所示:

ID_0, ID_1,ID_2
a,002,c
b,004,d
c,   ,e       
n,003,g
Run Code Online (Sandbox Code Playgroud)

不幸的是read_csv,未能抱怨它无法将 ' ' 转换为浮点数。

读取 csv 并将无法转换为浮点数的任何内容转换为 NaN 的正确方法是什么?

EdC*_*ica 5

如果您不指定dtype参数并通过,skipinitialspace=True那么它将正常工作:

In [4]:
t="""ID_0,ID_1,ID_2
a,002,c
b,004,d
c,   ,e
n,003,g"""

pd.read_csv(io.StringIO(t), skipinitialspace=True)
Out[4]:
  ID_0  ID_1 ID_2
0    a   2.0    c
1    b   4.0    d
2    c   NaN    e
3    n   3.0    g
Run Code Online (Sandbox Code Playgroud)

所以在你的情况下:

pd.read_csv("file.csv", skipinitialspace=True)
Run Code Online (Sandbox Code Playgroud)

会起作用的

您可以看到,这些内容dtypes符合预期:

In [5]:
pd.read_csv(io.StringIO(t), skipinitialspace=True).info()

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 3 columns):
ID_0    4 non-null object
ID_1    3 non-null float64
ID_2    4 non-null object
dtypes: float64(1), object(2)
memory usage: 176.0+ bytes
Run Code Online (Sandbox Code Playgroud)