pandas.DataFrame.assign#

DataFrame.assign(**kwargs)[источник]#

Назначить новые столбцы для DataFrame.

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

Параметры:
**kwargsсловарь {str: вызываемый объект или Series}

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

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

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

Примечания

Назначение нескольких столбцов в одном и том же assign возможно. Более поздние элементы в '**kwargs' могут ссылаться на вновь созданные или изменённые столбцы в 'df'; элементы вычисляются и присваиваются в 'df' по порядку.

Примеры

>>> 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

Вы можете создать несколько столбцов в одном 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