我一直在試圖繞過這一段時間,並且還沒有想出解決方案。清理數據:用字典中映射的值替換當前列值
我的問題是如何根據列名更改多列中的當前列值如果滿足條件?
我已閱讀作爲大熊貓CSV數據幀調查數據顯示:
import pandas as pd
df = pd.read_csv("survey_data")
我已經創建了列名的字典和值我想在每列,如果當前列值等於1.每列包含1個或NaN。基本上,以'_SA'= 5,'_A'= 4,'_NO'= 3,'_D'= 2和'_SD'結尾的數據框內的任何列保持爲當前值1.所有'NaN'值保持原樣。這是詞典:
op_dict = {
'op_dog_SA':5,
'op_dog_A':4,
'op_dog_NO':3,
'op_dog_D':2,
'op_dog_SD':1,
'op_cat_SA':5,
'op_cat_A':4,
'op_cat_NO':3,
'op_cat_D':2,
'op_cat_SD':1,
'op_fish_SA':5,
'op_fish_A':4,
'op_fish_NO':3,
'op_fish_D':2,
'op_fish__SD':1}
我還創建的數據幀中的列我想的列表中,如果要被改變的當前列值= 1稱爲[op_cols]。現在,我一直在嘗試使用這樣,通過在這些列中的值進行迭代,並在字典中的映射值替換1:
for i in df[op_cols]:
if i == 1:
df[op_cols].apply(lambda x: op_dict.get(x,x))
df[op_cols]
它不吐出一個錯誤,但它不更換1值與字典中的相應值。它仍然爲1
任何意見/爲什麼這是行不通的或更有效的辦法是建議,不勝感激
謝謝@tvashtar這個工作完美,我沒想過要循環訪問列名。感謝這方面的幫助 – da4l