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

时间:2019-01-29 22:00:04

标签: python pandas dataframe

我最近回答了一个问题,其中OP正在针对现有数据帧(link)查找具有多个不同值的多列。它相当简洁,但我认为不是很快。

最终我希望我可以做类似的事情:

# 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

不可重复:

对此提出的“可能重复”问题显示了分配给每列的多个不同值。我只是问是否有一种非常简单的方法将单个标量值分配给多个新列。答案可能正确且非常简单地是“否”-但值得知道,因此我可以停止搜索。

2 个答案:

答案 0 :(得分:0)

我想你想做

df['b'], df['c'] = 0, 0

答案 1 :(得分:0)

为什么不使用assign

df.assign(**dict.fromkeys(['b','c'],0))
Out[781]: 
   a  b  c
0  1  0  0
1  2  0  0

或通过dict创建d=dict(zip([namelist],[valuelist]))