当前位置: 首页 > 面试题库 >

大熊猫作为字符串而不是布尔值映射到TRUE / FALSE

雷飞虎
2023-03-14
问题内容

当我尝试将pandas数据框中的某些列从“ 0”和“ 1”转换为“ TRUE”和“
FALSE”时,pandas自动将dtype检测为布尔值。我想将dtype保留为字符串,字符串为“ TRUE”和“ FALSE”。

请参见下面的代码:

booleanColumns = pandasDF.select_dtypes(include=[bool]).columns.values.tolist()
booleanDictionary = {'1': 'TRUE', '0': 'FALSE'}

pandasDF.to_string(columns = booleanColumns)

for column in booleanColumns:
    pandasDF[column].map(booleanDictionary)

不幸的是,python在最后一次操作时自动将dtype转换为boolean。我该如何预防?


问题答案:

如果需要,请替换booleanTrueFalse

booleandf = pandasDF.select_dtypes(include=[bool])
booleanDictionary = {True: 'TRUE', False: 'FALSE'}

for column in booleandf:
    pandasDF[column] = pandasDF[column].map(booleanDictionary)

样品:

pandasDF = pd.DataFrame({'A':[True,False,True],
                   'B':[4,5,6],
                   'C':[False,True,False]})

print (pandasDF)
       A  B      C
0   True  4  False
1  False  5   True
2   True  6  False

booleandf = pandasDF.select_dtypes(include=[bool])
booleanDictionary = {True: 'TRUE', False: 'FALSE'}

#loop by df is loop by columns, same as for column in booleandf.columns:
for column in booleandf:
    pandasDF[column] = pandasDF[column].map(booleanDictionary)

print (pandasDF)
       A  B      C
0   TRUE  4  FALSE
1  FALSE  5   TRUE
2   TRUE  6  FALSE

编辑:

与Simplier解决方案replace通过dict

booleanDictionary = {True: 'TRUE', False: 'FALSE'}
pandasDF = pandasDF.replace(booleanDictionary)
print (pandasDF)
       A  B      C
0   TRUE  4  FALSE
1  FALSE  5   TRUE
2   TRUE  6  FALSE


 类似资料:
  • 我有一个PreferentFragment,它的内容是从。包含CheckBoxPreference的xml文件 如您所知,当用户与此Preance交互时,共享首选项对象会自动更新,以便android: key现在包含适当的布尔值。 但是,我想使用String而不是Boolean:是否有任何方法可以使CheckBoxPreection使用String值而不是Boolean值,以便我以后可以使用该键调

  • 我有接收JSON对象的REST资源,该JSON对象是从用户ID到某个布尔值的映射,该布尔值指示该用户是否有错误。 由于我希望有大量的用户,所以我希望通过使用1/0而不是true/false来缩小这个JSON的大小。 我尝试了一下,发现在淡化过程中,Jackson会成功地将1/0转换成true/false,但是有没有办法告诉Jackson(也许使用注释?)将此布尔字段序列化为1/0而不是true/f

  • 我有一个 CSV 文件,其中包含名称和电子邮件列。我的目标是映射一个新列,即将列名分成两列,名字和姓氏。以下示例表。 将 老实说,我目前只能阅读关于熊猫的文件,我已经阅读了一些关于熊猫地图的文章,但是我还没有找到合适的。 谢谢。

  • 我公开了一个使用另一个SOAP服务的服务。我得到了JAXB生成的服务模型。当我使用服务时,数据被设置到与此模型相关的对象中。我定义了自己的域模型,它与JAXB模型具有完全相同的类集,但没有xml注释等。我使用dozer来执行数据映射。当标记为注释(nillable=true)的某些布尔元素为null时,我的域模型中的目标对象布尔对象将设置为默认的true或false值。我希望它保留相同的空值。布尔

  • 问题内容: 我创建了一个带有复选框的简单页面: 该URL两次用MyCheckBox值填充!因此: 如果复选框为true,则仅重复该值。如果设置为false,它将仅在查询字符串中出现一次。 上面的代码得到了简化,因为我在窗体上有几个下拉菜单和一个文本框,它们可以正常工作。我认为我从这个问题中遗漏的代码没有什么异常之处。 是否有人在查询字符串参数重复方面有类似的问题? 问题答案: 此行为是设计使然的复

  • 问题内容: 不出所料,空元组不包含1 但是返回的值不等于 换一种方式来看,运算符返回的a既不是也不是: 但是,如果对原始表达式加上括号,则会恢复正常行为 或其值存储在变量中 在Python 2和Python 3中都观察到此行为。 你能解释发生了什么吗? 问题答案: 您正在遇到比较运算符链接;也 没有 意思。 相反,比较是链接在一起的,该表达式的真正含义是: 因为已经为false,所以将完全忽略链接

  • 在Java8上使用Apache CXF 2.7.11实现的一些Java first SOAP服务有一个问题。当TRUE作为值传递时,值将变为null。当true以小写形式传递时,同样的方法也能很好地工作。 我看到另一个线程,其中类扩展以及解决了这个问题,但是生成的WSDL类型已经从xs:boolean更改为xs:string。这意味着使用者应将布尔值作为字符串传递。这在我的情况下是不能接受的。 J

  • 所以我试着从一行中获取数据,看起来像这样: 现在,我这里是我的代码与正则表达式: “/某物”是我需要得到的,在实际使用中它永远是不同的东西。代码总是打印出“true”,而不是字符串中应该有的东西。我做错了什么?