pandas.DataFrame.map#
- DataFrame.map(функция, na_action=None, **kwargs)[источник]#
Применить функцию к элементам Dataframe поэлементно.
Добавлено в версии 2.1.0: DataFrame.applymap был устаревшим и переименован в DataFrame.map.
Этот метод применяет функцию, которая принимает и возвращает скаляр, к каждому элементу DataFrame.
- Параметры:
- функцияcallable
Функция Python, возвращает одно значение из одного значения.
- na_action{None, ‘ignore’}, по умолчанию None
Если 'ignore', распространять значения NaN, не передавая их в func.
- **kwargs
Дополнительные ключевые аргументы для передачи в качестве аргументов ключевых слов в функция.
- Возвращает:
- DataFrame
Преобразованный DataFrame.
Смотрите также
DataFrame.applyПрименить функцию вдоль входной оси DataFrame.
DataFrame.replaceЗаменить значения, указанные в to_replace с значение.
Series.mapПрименить функцию поэлементно к Series.
Примеры
>>> df = pd.DataFrame([[1, 2.12], [3.356, 4.567]]) >>> df 0 1 0 1.000 2.120 1 3.356 4.567
>>> df.map(lambda x: len(str(x))) 0 1 0 3 4 1 5 5
Как и Series.map, значения NA можно игнорировать:
>>> df_copy = df.copy() >>> df_copy.iloc[0, 0] = pd.NA >>> df_copy.map(lambda x: len(str(x)), na_action='ignore') 0 1 0 NaN 4 1 5.0 5
Также возможно использовать map GH 10214 lambda функции:
>>> df.map(round, ndigits=1) 0 1 0 1.0 2.1 1 3.4 4.6
Обратите внимание, что векторизованная версия функция часто существует, что будет значительно быстрее. Вы можете возвести каждый элемент в квадрат поэлементно.
>>> df.map(lambda x: x**2) 0 1 0 1.000000 4.494400 1 11.262736 20.857489
Но в этом случае лучше избегать map.
>>> df ** 2 0 1 0 1.000000 4.494400 1 11.262736 20.857489