pandas.read_csv:在具有 NaN 值的同时将列保留为整数

时间:2021-04-06 09:37:29

标签: python pandas

我刚刚从 R 转换为 Python,现在我正在尝试从 csv 文件中读取数据。 我对所有整数列都被视为浮点数感到非常恼火,经过一番挖掘后,我发现这是问题所在: NumPy or Pandas: Keeping array type as integer while having a NaN value

我看到接受的答案给了我一个关于去哪里的提示,但问题是我有数百列的数据,我想这是做数据科学时的典型情况。所以我不想为每一列指定使用 read_csv 读入数据时使用的类型。这会在 R 中自动修复。

在 Python 中使用 Pandas 以正确的方式读取数据真的有那么难吗?

来源https://pandas.pydata.org/pandas-docs/version/0.24/whatsnew/v0.24.0.html#optional-integer-na-support

1 个答案:

答案 0 :(得分:1)

您可以尝试使用:

df = pd.read_csv('./file.csv', dtype='Int64')

编辑:所以这不适用于字符串。相反,尝试这样的事情:

for col in df.columns[df.isna().any()].tolist():
    if df[col].dtype == 'float':
        df[col] = df[col].astype('Int64')

遍历具有 NA 值的每一列并检查其类型为 float,然后将它们转换为 Int64