Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫:向现有数据帧中的多个新列添加标量_Python_Pandas_Dataframe - Fatal编程技术网

Python 熊猫:向现有数据帧中的多个新列添加标量

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 但它抛出了一个错误 有没有一个超级简单的方法让我错过了?或者我之前发布的答案是最快/最简单的方法 注意 我知道这可以通过循环或将标量分

我最近回答了一个问题,OP在现有dataframe()中查找具有多个不同值的多个列。它相当简洁,但我不认为很快

最终,我希望我能做一些事情,比如:

# 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,而不是多个系列。我已经更新了我原来的问题。