Есть ли способ ускорить изменение DataFrame в oop? - PullRequest
2 голосов
/ 04 мая 2020
    for index, row in df.iterrows():
        print(index)

        name = row['name']
        new_name = get_name(name)
        row['new_name'] = new_name

        df.loc[index] = row

В этом фрагменте кода мое тестирование показывает, что последняя строка делает его довольно медленным, очень медленным. Это в основном вставка нового столбца строка за строкой. Может быть, мне следует сохранить все «новое_имя» в списке и обновить df вне l oop?

Ответы [ 2 ]

1 голос
/ 04 мая 2020

Используйте Series.apply для функции обработки для каждого значения столбца, это быстрее как iterrows:

df['new_name'] = df['name'].apply(get_name)

Если хотите улучшить производительность, тогда необходимо изменить функцию, если это возможно , но это зависит от функции.

0 голосов
/ 04 мая 2020
df['new_name'] = df.apply(lambda x: get_name(x) if x.name == 'name' else x)

.apply не лучшая практика, однако я не уверен, что есть лучшая практика здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...