Python 熊猫:向现有数据帧中的多个新列添加标量
我最近回答了一个问题,OP在现有dataframe()中查找具有多个不同值的多个列。它相当简洁,但我不认为很快 最终,我希望我能做一些事情,比如:Python 熊猫:向现有数据帧中的多个新列添加标量,python,pandas,dataframe,Python,Pandas,Dataframe,我最近回答了一个问题,OP在现有dataframe()中查找具有多个不同值的多个列。它相当简洁,但我不认为很快 最终,我希望我能做一些事情,比如: # Existing dataframe df = pd.DataFrame({'a':[1,2]}) df[['b','c']] = 0 这将导致: a b c 1 0 0 2 0 0 但它抛出了一个错误 有没有一个超级简单的方法让我错过了?或者我之前发布的答案是最快/最简单的方法 注意 我知道这可以通过循环或将标量分
# Existing dataframe
df = pd.DataFrame({'a':[1,2]})
df[['b','c']] = 0
这将导致:
a b c
1 0 0
2 0 0
但它抛出了一个错误
有没有一个超级简单的方法让我错过了?或者我之前发布的答案是最快/最简单的方法
注意
我知道这可以通过循环或将标量分配给多个列来实现,但如果可能的话,我会尽量避免。假设有50列或任何你不想写的数字:
df['b'], df['c'], ..., df['xyz'] = 0, 0, ..., 0
不是重复的:
对此建议的“可能重复”问题显示了分配给每列的多个不同值。我只是想问一下,是否有一种非常简单的方法可以将单个标量值分配给多个新列。答案可能是正确的,也可能是非常简单的,“不”-但值得知道,这样我就可以停止搜索。我想你想这样做
df['b'], df['c'] = 0, 0
为什么不使用
assign
df.assign(**dict.fromkeys(['b','c'],0))
Out[781]:
a b c
0 1 0 0
1 2 0 0
或者通过
d=dict(zip([namelist],[valuelist])创建dict
,您是否愿意df.assign(**{k:0表示[“b”,“c”]}中的k)
?编辑:我看到你在你的链接帖子里有这个。好吧,除了我链接的帖子中的内容,我认为没有其他方法,但我们会看看熊猫专家是否有想法。我仍然认为这是一个骗局。事实上,它是一个单一的标量值几乎没有什么区别(IMO)。这个解释解释了为什么这个语法不起作用。我会告诉你-这个解释确实提供了很多关于为什么我的语法不起作用的见解,但问题是不同的,因为它的目的是将单个标量值应用于多个新列。就像你说的,我想在完全结束这篇文章之前看看是否有人有点天赋。对于标量来说,稍微有点变化是很好的:df.assign(**dict.fromkeys(['b','c'],0))
。但是,再一次,我不确定这是否是你想要的。@jpp-如果没有更简单的方法,那可能就是赢家。不知道Wes et.al是否考虑过这一点,并决定不需要将标量应用于dataframe.Nde-感谢您的回答,但我希望将标量值分配给dataframe,而不是多个系列。我已经更新了我原来的问题。