Python 熊猫阅读csv仅推断布尔

Python 熊猫阅读csv仅推断布尔,python,pandas,csv,Python,Pandas,Csv,我想使用pandas.read_csv仅推断数据中的布尔类型 如果我使用dtypes=str,我没有一种简单的方法将数据转换回布尔类型,因为下面的方法不能很好地工作 df['bool_column'].astype(bool).eq(False) 我不想推断所有数据类型,因为我不想丢失数据中的任何整数类型 这个问题有简单的解决方案吗?对于最新版本,pandas read\u csv可以在不指定bool类型的情况下处理这个问题。其他更明确的方式如下: 可以指定列上的数据类型 d = pandas

我想使用pandas.read_csv仅推断数据中的布尔类型

如果我使用
dtypes=str
,我没有一种简单的方法将数据转换回布尔类型,因为下面的方法不能很好地工作

df['bool_column'].astype(bool).eq(False)
我不想推断所有数据类型,因为我不想丢失数据中的任何整数类型


这个问题有简单的解决方案吗?

对于最新版本,pandas read\u csv可以在不指定bool类型的情况下处理这个问题。其他更明确的方式如下:

可以指定列上的数据类型

d = pandas.read_csv('foo.csv', dtype={'bool_column': 'bool'})
或者,您可以通过应用以下命令将特定列转换为bool:

d = df['bool_column'].apply(bool)
or
d = df.bool_column.astype(bool)
MaxU给出了一个更好的解决方案。 这是另一个解决方案:

df = pandas.read_csv('foo.csv', converters={"bool_column": bool})

这是我的测试数据:

#foo.csv
col1,col2,col3,col4
false,true,1,hah
true,false,0,haha
false,true,1,haaaaa
false,true,1,hah
true,false,0,haha
false,true,1,haaaaa
false,true,1,hah
true,false,0,haha
false,true,1,haaaaa
false,true,1,hah

pandas.read_csv('test.txt',converters={'col1':lambda x: convert_bool(x),'col2':str}).dtypes
#output
col1      bool
col2    object
col3     int64
col4    object
dtype: object

pandas.read_csv('test.txt',converters={'col1': bool}).dtypes
#output
col1      bool
col2      bool
col3      int64
col4      object
dtype: object

对于最新版本,pandas read_csv可以在不指定bool类型的情况下处理此问题。其他更明确的方式如下:

可以指定列上的数据类型

d = pandas.read_csv('foo.csv', dtype={'bool_column': 'bool'})
或者,您可以通过应用以下命令将特定列转换为bool:

d = df['bool_column'].apply(bool)
or
d = df.bool_column.astype(bool)
MaxU给出了一个更好的解决方案。 这是另一个解决方案:

df = pandas.read_csv('foo.csv', converters={"bool_column": bool})

这是我的测试数据:

#foo.csv
col1,col2,col3,col4
false,true,1,hah
true,false,0,haha
false,true,1,haaaaa
false,true,1,hah
true,false,0,haha
false,true,1,haaaaa
false,true,1,hah
true,false,0,haha
false,true,1,haaaaa
false,true,1,hah

pandas.read_csv('test.txt',converters={'col1':lambda x: convert_bool(x),'col2':str}).dtypes
#output
col1      bool
col2    object
col3     int64
col4    object
dtype: object

pandas.read_csv('test.txt',converters={'col1': bool}).dtypes
#output
col1      bool
col2      bool
col3      int64
col4      object
dtype: object
如果有,您可以执行以下操作:

df['bool_column'] = df['bool_column'].eq('true')
如果有,您可以执行以下操作:

df['bool_column'] = df['bool_column'].eq('true')

df=pd.read\u csv(csv\u文件,sep=r'\s+,dtype={'D':np.bool})
df=pd.read\u csv(csv\u文件,sep=r'\s+,dtype={'D':np.bool})
D=df['bool列].apply(bool)
D=df.bool列。astype(bool)({'true':true,'false':false})@user113531我可以问一下您使用的是什么版本的python和pandas吗?在最新版本中,pandas似乎可以自动推断bool类型,而不在此处指定任何数据类型。但是如果您将csv读取为str,您可以这样做
df['cool\u column']=df['cool\u column'].str.upper()
df['0']=df['bool_column'].astype(bool)
或使用您的方式绝对正确。我在Python2上使用的是0.20.3版。7@user113531在Python2.7上的Pandas版本0.21.0中,布尔值的自动推断仍然适用于我。而且,MaxU提供了一个更好的解决方案。我还附加了另一个解决方案:)
d=df['bool_column']。apply(bool)
d=df.bool\u column.astype(bool)
dtype=str一起使用时不起作用
我必须使用类似
bool\u column.map的东西({'true':true',false':false})
@user113531我可以问一下您使用的是什么版本的python和pandas吗?在最新版本中,pandas可以自动推断bool类型,而不在此处指定任何数据类型。但是如果您将csv读取为str,您可以这样做
df['cool\u column']=df['cool\u column'].str.upper()
df['0']=df['bool\u column'].astype(bool)
或者使用您的方式是绝对正确的。我在python 2上使用的是0.20.3版。7@user113531在python 2.7上的Pandas版本0.21.0中,布尔值的自动推断仍然适用于我。而且,MaxU提供了一个更好的解决方案。我还附加了另一个解决方案:)