我试图将csv导入到pandas数据框中。我有一个布尔变量,用1和0表示,缺失的值用-9标识。当我试图将dtype指定为布尔时,我会得到一系列不同的错误,具体取决于我的尝试。
样本数据:test.csv
var1, var2
0, 0
0, 1
1, 3
-9, 0
0, 2
1, 7
我尝试在导入时指定dtype:
dtype_dict = {'var1':'bool','var2':'int'}
nan_dict = {'var1':[-9]}
foo = pd.read_csv('test.csv',dtype=dtype_dict, na_values=nan_dict)
我得到以下错误:
ValueError:无法安全地转换传递的用户dtype|b1用于第0列中的int 64 dtyped数据
我还尝试指定true和false值,
foo = pd.read_csv('test.csv',dtype=dtype_dict,na_values=nan_dict,
true_values=[1],false_values=[0])
但是我得到了一个不同的错误:
异常:必须是所有编码字节
这个错误的源代码说了一些关于捕获偶尔的none的内容,但是nones或null正是我想要的。
3条答案
按热度按时间4urapxun1#
可以为
var1
列指定converters
参数:hsgswve42#
你能做这样的事吗?
这应该会创建一个新的列,如果你满意,你可以复制旧的。
huus2vyu3#
发生错误
Must be all encoded bytes
是因为解析器需要字符串,而不是数字作为值。你的true/false值应该像这样指定: