Pandas read_csv,读取指定为in的缺失值的布尔值

2024-03-28 19:21:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将csv导入熊猫数据帧。我有用1和0表示的布尔变量,其中缺少的值用-9标识。 当我试图将dtype指定为boolean时,我会得到大量不同的错误,这取决于我尝试的是什么。在

样本数据:csv测试在

var1, var2
0,   0
0,   1
1,   3
-9,  0
0,   2
1,   7

我尝试在导入时指定数据类型:

^{pr2}$

我得到以下错误:

ValueError: cannot safely convert passed user dtype of |b1 for int64 dtyped data in column 0

我也试过指定真值和假值

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

但是我得到了另一个错误:

Exception: Must be all encoded bytes

错误的源代码说明了捕捉偶尔出现的none,但none或nulls正是我想要的。在


Tags: csv数据none错误dict标识数据类型样本
2条回答

你能做这样的事吗?在

df=pd.read_csv("test.csv",names=["var1","var2"])
df.ix[df.var1==0,'var1Bool']=False
df.ix[df.var1==1,'var1Bool']=True

这应该给你创建一个新的专栏,如果你满意,你可以复制旧的专栏。在

^{pr2}$

您可以为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})

enter image description here

相关问题 更多 >