2017-03-14 11 views
1

パンダデータフレームの一部の列を '0'と '1'から 'TRUE'と 'FALSE'に変換しようとすると、pandasは自動的にdtypeをブール私は文字列 'TRUE'と 'FALSE'でdtypeを文字列として保持したい。以下pandasがブール値ではなく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を変換します。どうすればこれを防ぐことができますか?

答えて

4

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 

EDIT:dictによってreplace

Simplierソリューション:

関連する問題