Python Pandas read_csv,读取缺少指定为int值的布尔值

Python Pandas read_csv,读取缺少指定为int值的布尔值,python,csv,pandas,boolean,missing-data,Python,Csv,Pandas,Boolean,Missing Data,我正在尝试将csv导入熊猫数据帧。我有用1和0表示的布尔变量,其中缺少的值用-9标识。 当我尝试将数据类型指定为布尔值时,根据我的尝试,会出现大量不同的错误 示例数据:test.csv var1, var2 0, 0 0, 1 1, 3 -9, 0 0, 2 1, 7 我尝试在导入时指定数据类型: dtype_dict = {'var1':'bool','var2':'int'} nan_dict = {'var1':[-9]} foo = pd.read_csv('te

我正在尝试将csv导入熊猫数据帧。我有用1和0表示的布尔变量,其中缺少的值用-9标识。 当我尝试将数据类型指定为布尔值时,根据我的尝试,会出现大量不同的错误

示例数据:test.csv

var1, var2
0,   0
0,   1
1,   3
-9,  0
0,   2
1,   7
我尝试在导入时指定数据类型:

dtype_dict = {'var1':'bool','var2':'int'}
nan_dict = {'var1':[-9]}
foo = pd.read_csv('test.csv',dtype=dtype_dict, na_values=nan_dict)
我得到以下错误:

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

我还尝试指定真值和假值

foo = pd.read_csv('test.csv',dtype=dtype_dict,na_values=nan_dict,
                 true_values=[1],false_values=[0])
但是我得到了一个不同的错误:

异常:必须是所有编码的字节


错误的源代码说明了捕获偶尔出现的none,但nones或null正是我想要的

你能这样做吗

df=pd.read_csv("test.csv",names=["var1","var2"])
df.ix[df.var1==0,'var1Bool']=False
df.ix[df.var1==1,'var1Bool']=True
这将为您创建一个新列,如果您满意,您可以复制旧列

   var1  var2 var1Bool
0     0     0    False
1     0     1    False
2     1     3     True
3    -9     0      NaN
4     0     2    False
5     1     7     True

您可以为
var1
列指定
converters
参数:

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})

谢谢。理想情况下,我希望在导入时这样做,因为数据有点大,但这是一个很好的解决方法。我还希望了解导入中的错误以及为什么导入不起作用。但如果我在接下来的几个小时里没有得到更多的见解,我会把这个标记为答案。