Выберите строки из фрейма данных на основе условия и примените функцию

У меня есть следующий пример кадра данных

  Marked       City
1   0        New York
2   1         California

Я хочу выбрать строки из фрейма данных, где Marked равен 0, и применить некоторую функцию к строке City. Фрейм данных большой (более 1 млн строк), а применяемая функция сложна, поэтому вариант использования оператора условия для всего фрейма данных является плохим, поскольку я все еще повторяю целые 1 млн записей. Выбор строк во фрейме данных на основе условия уменьшает число строк до 300 тыс., и применение к ним функции происходит намного быстрее.

0
0
265
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используйте 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: объекты «Серии» изменяемы, поэтому их нельзя хешировать.

Alex Nikitin 23.12.2020 18:27

Другие вопросы по теме

Похожие вопросы