首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pandas read csv infer only bool

Pandas read csv infer only bool
EN

Stack Overflow用户
提问于 2017-12-08 04:45:31
回答 2查看 2.3K关注 0票数 1

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

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

代码语言:javascript
复制
df['bool_column'].astype(bool).eq(False)

我不想推断所有的数据类型,因为我不想丢失数据中的任何整数类型。

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

EN

回答 2

Stack Overflow用户

发布于 2017-12-08 05:01:29

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

您可以指定哪个列上的数据类型

代码语言:javascript
复制
d = pandas.read_csv('foo.csv', dtype={'bool_column': 'bool'})

或者,您可以通过以下应用程序将特定列转换为bool:

代码语言:javascript
复制
d = df['bool_column'].apply(bool)
or
d = df.bool_column.astype(bool)

MaxU提供了一个更好的解决方案。这是另一个解决方案:

代码语言:javascript
复制
df = pandas.read_csv('foo.csv', converters={"bool_column": bool})

代码语言:javascript
复制
def convert_bool(col): 
    if str(col) == "true": 
       return True 
    elif str(col) == "false": 
       return False 

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

以下是我的测试数据:

代码语言:javascript
复制
#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
票数 3
EN

Stack Overflow用户

发布于 2017-12-08 05:16:28

如果您有not standard values - true and false instead of True and False,您可以执行以下操作:

代码语言:javascript
复制
df['bool_column'] = df['bool_column'].eq('true')
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47703471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档