Python Pandas read_csv,读取缺少指定为int值的布尔值
我正在尝试将csv导入熊猫数据帧。我有用1和0表示的布尔变量,其中缺少的值用-9标识。 当我尝试将数据类型指定为布尔值时,根据我的尝试,会出现大量不同的错误 示例数据:test.csvPython 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
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})
谢谢。理想情况下,我希望在导入时这样做,因为数据有点大,但这是一个很好的解决方法。我还希望了解导入中的错误以及为什么导入不起作用。但如果我在接下来的几个小时里没有得到更多的见解,我会把这个标记为答案。