Spec-Zone.ru › pandas 0.23

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

Spec-Zone.ru

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