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