У меня есть следующий пример кадра данных
Marked City
1 0 New York
2 1 California
Я хочу выбрать строки из фрейма данных, где Marked равен 0, и применить некоторую функцию к строке City. Фрейм данных большой (более 1 млн строк), а применяемая функция сложна, поэтому вариант использования оператора условия для всего фрейма данных является плохим, поскольку я все еще повторяю целые 1 млн записей. Выбор строк во фрейме данных на основе условия уменьшает число строк до 300 тыс., и применение к ним функции происходит намного быстрее.
Используйте loc
доступ:
def some_func(x): return 1
mask = df.Marked == 0
df.loc[mask, 'new_col'] = df.loc[mask].apply(some_func, axis=1)
Спасибо за ваш ответ! Я попробовал что-то вроде этого и получил TypeError: объекты «Серии» изменяемы, поэтому их нельзя хешировать.