pandas.DataFrame.assign
-
DataFrame.assign(**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.24.2/reference/api/pandas.DataFrame.assign.html