pandas 以字符串而不是布尔值映射到TRUE/FALSE [英] Pandas mapping to TRUE/FALSE as String, not Boolean
本文介绍了 pandas 以字符串而不是布尔值映射到TRUE/FALSE的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
当我尝试将pandas数据框中的某些列从"0"和"1"转换为"TRUE"和"FALSE"时,pandas自动将dtype检测为布尔值.我想将dtype保留为字符串,字符串为"TRUE"和"FALSE".
When I try to convert some columns in a pandas dataframe from '0' and '1' to 'TRUE' and 'FALSE', pandas automatically detects dtype as boolean. I want to keep dtype as string, with the strings 'TRUE' and '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.我该如何预防?
Unfortunately, python automatically converts dtype to boolean with the last operation. How can I prevent this?
推荐答案
如果需要替换boolean
值True
和False
:
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
使用 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
这篇关于 pandas 以字符串而不是布尔值映射到TRUE/FALSE的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文