сравнивая два столбца и заменить NaN числами - PullRequest
0 голосов
/ 23 декабря 2019
for i in range(len(df1)-1):
    if (df1['overall_rating'][i]==np.nan) and (df1['recommended'][i]==0):
        df1['overall_rating']=df1['overall_rating'][i].replace(np.nan,1)
    else:
        df1['overall_rating']
print(df1['overall_rating'])

Я сравниваю столбцы общего рейтинга и рекомендуемый столбец в кадре данных pandas. Если оба значения столбца оказываются истинными, тогда я должен заменить nan в столбце рейтинга на 1. Но я также не получаю ответ об ошибке. Любой, пожалуйста, дайте мне знать, где я иду не так.

1 Ответ

0 голосов
/ 23 декабря 2019

Используйте DataFrame.loc для установки 1 на 2 условия, для пропущенных значений теста используется Series.isna Функция:

df1 = pd.DataFrame({'overall_rating':[np.nan,2,4,np.nan],
                   'recommended':[0,0,1,1]})

df1.loc[df1['overall_rating'].isna() & (df1['recommended']==0), 'overall_rating'] = 1
print (df1)
   overall_rating  recommended
0             1.0            0
1             2.0            0
2             4.0            1
3             NaN            1
...