pandas.DataFrame.assign
-
DataFrame.assign(**kwargs)[source] -
Присваивает новые столбцы DataFrame, возвращая новый объект (копию) с добавленными столбцами к исходным. Существующие столбцы, которым присваиваются новые значения, будут перезаписаны.
Параметры: kwargs : пары «ключ-значение»
ключи — имена столбцов. Если значения — вызываемые объекты, они вычисляются для DataFrame и присваиваются новым столбцам. Вызываемый объект не должен изменять входной DataFrame (хотя pandas этого не проверяет). Если значения не являются вызываемыми объектами (например, Series, скаляр или массив), они просто присваиваются.
Возвращает: df : DataFrame
Новый DataFrame с новыми столбцами в дополнение ко всем существующим.
Примечания
Присвоение нескольких столбцов в рамках одного
assignвозможно. Для Python 3.6 и выше, последующие элементы в ‘**kwargs’ могут ссылаться на вновь созданные или измененные столбцы в ‘df’; элементы вычисляются и присваиваются в ‘df’ в порядке следования. Для Python 3.5 и ниже порядок аргументов-ключей не определен, вы не можете ссылаться на вновь созданные или измененные столбцы. Все элементы вычисляются сначала, а затем присваиваются в алфавитном порядке.Изменено в версии 0.23.0: Порядок аргументов-ключей сохраняется для Python 3.6 и выше.
Примеры
>>> df = pd.DataFrame({'A': range(1, 11), 'B': np.random.randn(10)})Где значение — вызываемый объект, оцениваемый по
df:>>> df.assign(ln_A = lambda x: np.log(x.A)) A B ln_A 0 1 0.426905 0.000000 1 2 -0.780949 0.693147 2 3 -0.418711 1.098612 3 4 -0.269708 1.386294 4 5 -0.274002 1.609438 5 6 -0.500792 1.791759 6 7 1.649697 1.945910 7 8 -1.495604 2.079442 8 9 0.549296 2.197225 9 10 -0.758542 2.302585Где значение уже существует и вставляется:
>>> newcol = np.log(df['A']) >>> df.assign(ln_A=newcol) A B ln_A 0 1 0.426905 0.000000 1 2 -0.780949 0.693147 2 3 -0.418711 1.098612 3 4 -0.269708 1.386294 4 5 -0.274002 1.609438 5 6 -0.500792 1.791759 6 7 1.649697 1.945910 7 8 -1.495604 2.079442 8 9 0.549296 2.197225 9 10 -0.758542 2.302585Где аргументы-ключи зависят друг от друга
>>> df = pd.DataFrame({'A': [1, 2, 3]})>>> df.assign(B=df.A, C=lambda x:x['A']+ x['B']) A B C 0 1 1 2 1 2 2 4 2 3 3 6
© 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.23.4/generated/pandas.DataFrame.assign.html