Предположим, у меня есть DataFrame, который выглядит примерно так:
In [1]: df = pd.DataFrame([['name1', 2, 3, 'red'], ['name2', 4, 5, 'orange'], ['name3', 6, 7, '-'], ['name4', 8, 9, '-']], \
columns=('names', 'data1', 'data2', 'category'))
df
Out[1]:
name data1 data2 category
0 name1 2 3 red
1 name2 4 5 orange
2 name3 6 7 -
3 name4 8 9 -
Для некоторых строк в некоторых столбцах отсутствуют данные, которые обозначаются знаком '-':
Что я хочу сделать, так это заполнить пропущенные данные построчно. Существует функция, которая может определить правильную категорию для каждой строки, если ей передано имя. Я использовал произвольные термины, чтобы сделать вопрос общим и широким, поскольку фактическая функция извлекает данные из базы данных. Например:
In [2]: import library as lib
lib.get_category('name1')
Out[2]: ['red']
Как мне обновить все пропущенные значения, используя функцию построчно? Я попытался использовать df.loc, чтобы получить все строки с пропущенными данными и передать в серию соответствующие имена, но он обновляет только все пропущенные значения с последним значением в серии. Я считаю, что основная проблема здесь заключается в правильной итерации.
Окончательный ожидаемый результат должен выглядеть примерно так (при условии, что lib.get_category ('name3') возвращает ['yellow'], а lib.get_category ('name4') возвращает ['green']:
Out[1]:
name data1 data2 category
0 name1 2 3 red
1 name2 4 5 orange
2 name3 6 7 yellow
3 name4 8 9 green