簡體   English   中英

如何基於其他列的某些值替換列的nan值

[英]How to replace nan values of a column based on certain values of other column

我有兩列,col1指受教育程度,col2指他們的工作。 col2具有一些nan值,因此我想根據列1的值替換此nan值。例如,如果col1 ='bachelor',則col2必須為='teacher';如果col1 ='highschool',則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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM