我正在嘗試替換數據框的一列中的值。列(“女性”)僅包含值“女性”和“男性”。我嘗試了以下方法:w['female']['female']='1'w['female']['male']='0' 但是會收到與先前結果完全相同的副本。理想情況下,我希望得到一些類似于下面的循環元素的輸出。if w['female'] =='female': w['female'] = '1';else: w['female'] = '0';我瀏覽了gotchas文檔(http://pandas.pydata.org/pandas-docs/stable/gotchas.html),但無法弄清楚為什么什么也沒發生。任何幫助將不勝感激。
4 回答

慕田峪9158850
TA貢獻1794條經驗 獲得超8個贊
如果我理解正確,則您需要以下內容:
w['female'] = w['female'].map({'female': 1, 'male': 0})
(在這里,我將值轉換為數字,而不是包含數字的字符串。如果確實需要,可以將它們轉換為"1"和"0",但是我不確定為什么要這樣做。)
您的代碼不工作的原因是因為使用['female']柱(第二'female'你w['female']['female'])并不意味著“選擇列其中的值是‘女’”。這意味著選擇索引為“女性”的行,而您的DataFrame中可能沒有索引。

精慕HU
TA貢獻1845條經驗 獲得超8個贊
您可以使用loc編輯數據框的子集:
df.loc[<row selection>, <column selection>]
在這種情況下:
w.loc[w.female != 'female', 'female'] = 0
w.loc[w.female == 'female', 'female'] = 1
添加回答
舉報
0/150
提交
取消