#python #pandas #dataframe
#python #pandas #dataframe
Вопрос:
Я работаю с dataframe со многими отсутствующими значениями. Я ищу эффективный способ заменить отсутствующие значения. Ниже приведен пример фрейма данных:
s/n Name Home_Zip work_zip Family_zip
1 John 56729 N/A 836AB
2 sawn N/A N/A 73836
3 Michael N/A 839CD 83093
4 Nathan 93932 78393 N/a
5 Jack N/A N/A N/A
Здесь я хочу заполнить недостающие значения Home_Zip
таким образом, чтобы они выглядели сначала в work_zip
, если это
not null возвращает это значение, иначе оно возвращает family_zip
. Если в случае всех значений
возвращает значение null неизвестно.
s/n Name Home_Zip work_zip Family_zip
1 John 56729 N/A 836AB
2 sawn 73836 N/A 73836
3 Michael 839CD 839CD 83093
4 Nathan 93932 78393 N/a
5 Jack Unkown N/A N/A
Ответ №1:
Вы можете использовать bfill
с последующим fillna()
.
df['Home_Zip'] = df.iloc[:, 2:].bfill(1).fillna('Unknown')['Home_Zip']
Или связать несколько fillna
:
df['Home_Zip'] = (df['Home_Zip'].fillna(df['work_zip'])
.fillna(df['Family_zip'])
.fillna('Unknown')
)
Вывод:
s/n Name Home_Zip work_zip Family_zip
0 1 John 56729 NaN 836AB
1 2 sawn 73836 NaN 73836
2 3 Michael 839CD 839CD 83093
3 4 Nathan 93932 78393 N/a
4 5 Jack Unknown NaN NaN
Комментарии:
1. Идеально, это именно то, что я искал. Спасибо.
2. есть ли способ контролировать количество столбцов для поиска в bffill.
3. Да, вы можете заменить
df.iloc[:,2:]
наdf[your_column_list]
.