如果存在值,Pandas会查找,否则会保留相同的值

2024-10-01 11:22:22 发布

您现在位置:Python中文网/ 问答频道 /正文

我有这样一个数据帧df1

id gender
1  m
2  f
3  u
4  

我有这样一个查找数据框

lookupinputcol  lookupoutputcol
m                male
f                female

我想在df1中生成一个新列,如下所示

id gender lookup_gender
1  m       male
2  f       female
3  u       u
4           

joins/merges/concat可以帮助我实现这一点,但是它不会给我第3行中的'u'和第4行中的''的值,因为该记录不在查找表中


Tags: 数据id记录lookupgendermalefemaledf1
2条回答

通过字典或Series^{}^{}^{}一起使用:

d = dict(zip(df1['lookupinputcol'], df1['lookupoutputcol']))
#alternative solution 
#d = df1.set_index('lookupinputcol')['lookupoutputcol']
df['lookup_gender_new'] = df['gender'].map(d).fillna(df['gender'])

或:

df['lookup_gender_new'] = df['gender'].replace(d)

或者根据耶斯雷尔的回答创建dict

d = dict(zip(df1['lookupinputcol'], df1['lookupoutputcol']))

然后使用apply

df['lookup_gender'] = df.apply(lambda x: d.get(x['gender'],x['gender]),axis=1)

相关问题 更多 >