我有一本将数字标签与分类标签相关的字典。
dict = {
0:'cat',
1:'dog',
2:'fish
}
我的dataframe(df)输出如下:
Feature | Feature Value | Feature1 | Feature1 Value
Pet 1 Thing 1
Person Steve Pet 1
Place Texas Place Virginia
我想用“ dog”代替“ 1”。
我尝试过这个。
df.replace({df.loc[df['Feature'] == 'Pet']: dict})
但是,我知道这只是在匹配Feature列,而不是从Feature值中提取值以匹配字典中的值。
我的dataframe(df)输出应该是:
Feature | Feature Value | Feature1 | Feature1 Value
Pet dog Thing 1
Person Steve Pet dog
Place Texas Place Virginia
答案 0 :(得分:0)
考虑到您的情况,您可以这样做:
df['Feature Value'].map(dict).fillna(df['Feature Value'])
这是非穷举映射,map()
函数映射按照您在字典中定义的标签进行映射,并且fillna()有助于保留不匹配项的现有值。另外,map()
比repalce()
答案 1 :(得分:0)
您可以基于功能为单个功能/功能值集替换值。
注意:由于Feature_Value列是对象类型,因此我将所选值用作type(int)。
df.loc[df['Feature'] == 'Pet', 'Feature_Value']= df.loc[df['Feature'] == 'Pet', 'Feature_Value'].astype(int).replace(d)
df.loc[df['Feature1'] == 'Pet', 'Feature1_Value']= df.loc[df['Feature1'] == 'Pet', 'Feature1_Value'].astype(int).replace(d)
Feature Feature_Value Feature1 Feature1_Value
0 Pet dog Thing 1
1 Person Steve Pet dog
2 Place Texas Place Virginia