gpt4 book ai didi

pandas - Pandas DataFrame.assign参数

转载 作者:行者123 更新时间:2023-12-03 13:29:24 26 4
gpt4 key购买 nike

问题

如何使用assign返回添加了多个新列的原始DataFrame的副本?

期望的结果

df = pd.DataFrame({'A': range(1, 5), 'B': range(11, 15)})
>>> df.assign({'C': df.A.apply(lambda x: x ** 2), 'D': df.B * 2})
A B C D
0 1 11 1 22
1 2 12 4 24
2 3 13 9 26
3 4 14 16 28

ATTEMPTS

上面的示例导致:
ValueError: Wrong number of items passed 2, placement implies 1

背景

Pandas中的 assign函数获取加入新分配的列的相关数据帧的副本,例如
df = df.assign(C=df.B * 2)
>>> df
A B C
0 1 11 22
1 2 12 24
2 3 13 26
3 4 14 28

此函数的 0.19.2 documentation表示可以向数据帧添加多个列。

Assigning multiple columns within the same assign is possible, but you cannot reference other columns created within the same assign call.



此外:

Parameters:
kwargs : keyword, value pairs

keywords are the column names.



该函数的源代码声明它接受字典:
def assign(self, **kwargs):
"""
.. versionadded:: 0.16.0
Parameters
----------
kwargs : keyword, value pairs
keywords are the column names. If the values are callable, they are computed
on the DataFrame and assigned to the new columns. If the values are not callable,
(e.g. a Series, scalar, or array), they are simply assigned.

Notes
-----
Since ``kwargs`` is a dictionary, the order of your
arguments may not be preserved. The make things predicatable,
the columns are inserted in alphabetical order, at the end of
your DataFrame. Assigning multiple columns within the same
``assign`` is possible, but you cannot reference other columns
created within the same ``assign`` call.
"""

data = self.copy()

# do all calculations first...
results = {}
for k, v in kwargs.items():

if callable(v):
results[k] = v(data)
else:
results[k] = v

# ... and then assign
for k, v in sorted(results.items()):
data[k] = v

return data

最佳答案

您可以通过提供每个新列作为关键字参数来创建多列:

df = df.assign(C=df['A']**2, D=df.B*2)

通过使用 **将字典作为关键字参数解压缩,可以使您的示例字典正常工作:
df = df.assign(**{'C': df.A.apply(lambda x: x ** 2), 'D': df.B * 2})

看来 assign应该可以接受字典,但是根据您发布的源代码,目前看来它不受支持。

结果输出:
   A   B   C   D
0 1 11 1 22
1 2 12 4 24
2 3 13 9 26
3 4 14 16 28

关于pandas - Pandas DataFrame.assign参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42101382/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com