Задать вопрос
@realsandking

Как применить функцию для всего датафрейма pandas?

Мне нужно применить функцию очистки text hero для всего датафрейма
  • Вопрос задан
  • 227 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@angrypotato666
Была похожая ситуация.

df = df.astype(str)

def cleaner(column):
    return texthero.clean(column)


Если нужно будет вывести графики:

for column in df.columns:
fig = go.Figure(data=[go.Histogram(x=df[column])])
fig.update_layout(title=f'Гистограмма для столбца: {column}', xaxis_title=column)
fig.show()
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Maksim_64
@Maksim_64
Data Analyst
1. Фрейм это не однородная структура данных, то есть у тебя могут быть колонки разных типов, и если ты применяешь функцию для всего фрейма (возможно применение и для подсета фрейма), ты должен быть уверен, что она применима к этим типам данным.

2. Как следствие ты должен привести свой фрейм к такому типу данных с которым может работать твоя функция метод astype

3. Есть три направления для применения твоей функции. Основной это метод apply он применяется к каждой строке или каждой колонке параметр axis, то есть когда ты пишешь свою кастомную функцию на вход она будет получать либо numpy массив либо pandas Series. Вообще apply для фрейма имеет довольно много интересных параметров почитай доки этого метода он реально мощный.

4. Ты также можешь использовать pipe он работает как с Series так и с фреймаим я их часто по цепочке использую очень удобно. То есть пишешь функцию где на вход тебе фрейм приходит, оперируешь так как хочешь им. И потом ориганальный фрейм pipe(func, *args, **kwargs) и тебе приходит копия оригинального фрейма с твоими изменениями описанными в func, это очень хорошая практика.

5. Ну и последнее самое простенькое это map применяет функцию по элементно к твоему фрейму. То есть свою кастомную функцию ты пишешь, не для numpy массива, не для pandas Series, а для каждого элемента фрейма.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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