我有两列,col1指受教育程度,col2指他们的工作。
col2具有一些nan值,因此我想根据第1列的值替换此nan值。
例如,如果col1 ='bachelor',则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

关于python - 如何基于其他列的某些值替换列的nan值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57745212/

10-15 22:59