Python 熊猫符合dict';其他';

Python 熊猫符合dict';其他';,python,pandas,dictionary,Python,Pandas,Dictionary,我有一个问题: import pandas new_dict={ 'a':1, 'b':2, 'else':4 } df=pandas.DataFrame([['new1','a'],['new2','b'],['new3','c'],['new4','d'],['new5','b']],columns=['new','id']) df是这样的 new id 0 new1 a 1 new2 b 2 new3 c 3 new4 d 4 new5

我有一个问题:

import pandas

new_dict={
    'a':1,
    'b':2,
    'else':4
}
df=pandas.DataFrame([['new1','a'],['new2','b'],['new3','c'],['new4','d'],['new5','b']],columns=['new','id'])
df是这样的

    new id
0  new1  a
1  new2  b
2  new3  c
3  new4  d
4  new5  b
我想要的结果是:

   new id
0  new1  1
1  new2  2
2  new3  4
3  new4  4
4  new5  2
我尝试将dict转换为数据帧并使用merge方法。但“else”不匹配:

import pandas

new_dict={'newid':['a','b','else'],
      'idd':[1,2,4]}
df2=pandas.DataFrame(new_dict,columns=['newid','idd'])
df=pandas.DataFrame([['new1','a'],['new2','b'],['new3','c'],['new4','d'],['new5','b']],columns=['new','id'])
我尝试使用熊猫合并方法来解决这个问题,但我不知道下一步该怎么做。谢谢

您可以使用:

另一个解决方案包括:


您也可以将
map
与函数一起使用。
我还使用您指定的字典,但通过
get
方法访问值,您可以在该方法中指定默认值

def new(x):
    new_dict = dict(a=1, b=2)
    return new_dict.get(x, 4)

df=pd.DataFrame([
    ['new1','a'],['new2','b'],
    ['new3','c'],['new4','d'],
    ['new5','b']],
    columns=['new','id'])


df.id = df.id.map(new)

print(df)

    new  id
0  new1   1
1  new2   2
2  new3   4
3  new4   4
4  new5   2
df.id = np.where(df.id.isin(new_dict), df.id.map(new_dict), new_dict['else']).astype(int)
print (df)
    new  id
0  new1   1
1  new2   2
2  new3   4
3  new4   4
4  new5   2
def new(x):
    new_dict = dict(a=1, b=2)
    return new_dict.get(x, 4)

df=pd.DataFrame([
    ['new1','a'],['new2','b'],
    ['new3','c'],['new4','d'],
    ['new5','b']],
    columns=['new','id'])


df.id = df.id.map(new)

print(df)

    new  id
0  new1   1
1  new2   2
2  new3   4
3  new4   4
4  new5   2