Spec-Zone.ru › pandas 0.25

pandas.DataFrame.assign

DataFrame.assign(self, **kwargs) [source]

Присваивание новых столбцов DataFrame.

Возвращает новый объект со всеми исходными столбцами, а также новыми. Существующие столбцы, которые переназначаются, будут перезаписаны.

Параметры:
**kwargs : dict of {str: callable or Series}

Имена столбцов являются ключевыми словами. Если значения являются вызываемыми, они вычисляются для DataFrame и присваиваются новым столбцам. Вызываемый объект не должен изменять входной DataFrame (хотя pandas этого не проверяет). Если значения не вызываемы (например, Series, скалярное значение или массив), они просто присваиваются.

Возвращает:
DataFrame

Новый DataFrame с новыми столбцами в дополнение ко всем существующим столбцам.

Примечания

Присваивание нескольких столбцов в рамках одного assign возможно. Для Python 3.6 и выше, последующие элементы в ‘**kwargs’ могут ссылаться на недавно созданные или измененные столбцы в ‘df’; элементы вычисляются и присваиваются в ‘df’ в порядке. Для Python 3.5 и ниже порядок ключевых аргументов не определён, вы не можете ссылаться на недавно созданные или изменённые столбцы. Все элементы вычисляются сначала, а затем присваиваются в алфавитном порядке.

Изменено в версии 0.23.0: Порядок ключевых аргументов сохраняется для Python 3.6 и более поздних версий.

Примеры

>>> df = pd.DataFrame({'temp_c': [17.0, 25.0]},
...                   index=['Portland', 'Berkeley'])
>>> df
          temp_c
Portland    17.0
Berkeley    25.0

Где значение является вызываемым, вычисляемым на df:

>>> df.assign(temp_f=lambda x: x.temp_c * 9 / 5 + 32)
          temp_c  temp_f
Portland    17.0    62.6
Berkeley    25.0    77.0

В качестве альтернативы, тот же результат может быть достигнут, напрямую ссылаясь на существующий Series или последовательность:

>>> df.assign(temp_f=df['temp_c'] * 9 / 5 + 32)
          temp_c  temp_f
Portland    17.0    62.6
Berkeley    25.0    77.0

В Python 3.6+ вы можете создать несколько столбцов в рамках одного assign, где один из столбцов зависит от другого, определённого в рамках того же assign:

>>> df.assign(temp_f=lambda x: x['temp_c'] * 9 / 5 + 32,
...           temp_k=lambda x: (x['temp_f'] +  459.67) * 5 / 9)
          temp_c  temp_f  temp_k
Portland    17.0    62.6  290.15
Berkeley    25.0    77.0  298.15

© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.25.0/reference/api/pandas.DataFrame.assign.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API