Python 如何基于其他列的某些值替换列的nan值

Python 如何基于其他列的某些值替换列的nan值,python,pandas,replace,nan,Python,Pandas,Replace,Nan,我有两个专栏,col1是指教育水平,col2是指他们的工作。 col2有一些nan值,所以我想基于列1的值替换这个nan值。 例如,如果col1='bacher',那么col2必须是='teacher' 如果col1='high school'那么col2='actor'。。以此类推,我有7个不同的col1值 我尝试创建一个如下函数: def rep_nan(x): if x['col1']=='bachelor': x['col2']='teacher' eli

我有两个专栏,col1是指教育水平,col2是指他们的工作。 col2有一些nan值,所以我想基于列1的值替换这个nan值。 例如,如果col1='bacher',那么col2必须是='teacher' 如果col1='high school'那么col2='actor'。。以此类推,我有7个不同的col1值

我尝试创建一个如下函数:

def rep_nan(x):
    if x['col1']=='bachelor':
        x['col2']='teacher'
    elif x['col1']=='blabla':
        x['col2']='blabla'
    .....
    elif x['col1']='high school':
        x['col2']='actor'
然后我应用到我的数据集:

df.apply(rep_nan,axis=1)
但我得到的结果是“无”列


错误在哪里?或者我该如何完成这项任务?

您可以在这里制作词典:

rep_nan = {
    'bachelor': 'tacher',
    'blabla': 'blabla',
    'high school': 'actor'
}
然后,我们可以将nan值替换为:

df.loc[df['col2'].isnull(), 'col2'] = df[df['col2'].isnull()]['col1'].replace(rep_nan)
例如:

>>> df
          col1   col2
0     bachelor   None
1     bachelor  clown
2       blabla   None
3  high school   None
>>> df.loc[df['col2'].isnull(), 'col2'] = df[df['col2'].isnull()]['col1'].replace(rep_nan)
>>> df
          col1    col2
0     bachelor  tacher
1     bachelor   clown
2       blabla  blabla
3  high school   actor
可能重复的