我想使用 pd.get_dummies 將我的 pandas 資料框中的所有布爾列轉換為 0 和 1。但是,布林值在 get_dummies 函式之后保持不變。
例如:
tmp = pd.DataFrame([
['green' , True],
['red' , False],
['blue' , True]])
tmp.columns = ['color', 'class']
pd.get_dummies(tmp)
# I have also tried pd.get_dummies(tmp, dtype=int), but got the same output
我有:
class color_blue color_green color_red
0 True 0 1 0
1 False 0 0 1
2 True 1 0 0
但是我需要:
color_blue color_green color_red class_True class_False
0 0 1 0 1 0
1 0 0 1 0 1
2 1 0 0 1 0
更新:我的資料框包含數字資料,因此將資料框中的所有列轉換為字串可能不是最好的解決方案。
uj5u.com熱心網友回復:
為了處理布爾列,將它們轉換為字串(這里轉換了所有列):
print (pd.get_dummies(tmp.astype(str)))
color_blue color_green color_red class_False class_True
0 0 1 0 0 1
1 0 0 1 1 0
2 1 0 0 0 1
僅轉換布林值:
print (pd.get_dummies(tmp.astype({'class':'str'})))
color_blue color_green color_red class_False class_True
0 0 1 0 0 1
1 0 0 1 1 0
2 1 0 0 0 1
您只能為布爾列創建字典:
d = dict.fromkeys(tmp.select_dtypes('bool').columns, 'str')
print (pd.get_dummies(tmp.astype(d)))
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/454556.html
