在满足Column1条件的情况下,用Dictionary Key替换Column2的值

时间:2019-07-31 23:01:39

标签: python pandas numpy

我有一本将数字标签与分类标签相关的字典。

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

2 个答案:

答案 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