Pandas read_csv,读取一个带有指定为 int 的缺失值的布尔值

Ree*_*een 5 python csv boolean missing-data pandas

我正在尝试将 csv 导入到 Pandas 数据框中。我有用 1 和 0 表示的布尔变量,其中缺失值用 -9 标识。当我尝试将 dtype 指定为布尔值时,我会收到许多不同的错误,具体取决于我尝试的内容。

示例数据:test.csv

var1, var2
0,   0
0,   1
1,   3
-9,  0
0,   2
1,   7
Run Code Online (Sandbox Code Playgroud)

我尝试在导入时指定 dtype:

dtype_dict = {'var1':'bool','var2':'int'}
nan_dict = {'var1':[-9]}
foo = pd.read_csv('test.csv',dtype=dtype_dict, na_values=nan_dict)
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ValueError:无法安全地将 |b1 的传递用户数据类型转换为第 0 列中的 int64 数据类型数据

我也试过指定真假值,

foo = pd.read_csv('test.csv',dtype=dtype_dict,na_values=nan_dict,
                 true_values=[1],false_values=[0])
Run Code Online (Sandbox Code Playgroud)

但后来我得到了一个不同的错误:

例外:必须是所有编码字节

错误的源代码说明了一些关于捕获偶尔无的信息,但无或空值正是我想要的。

Psi*_*dom 4

您可以convertersvar1列指定参数:

from io import StringIO
import numpy as np
import pandas as pd

pd.read_csv(StringIO("""var1, var2
0,   0
0,   1
1,   3
-9,  0
0,   2
1,   7"""), converters = {'var1': lambda x: bool(int(x)) if x != '-9' else np.nan})
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述