超级简单的就地分配:df['new'] = 0
对于就地修改,执行直接赋值。此分配由 pandas 为每一行广播。
df = pd.DataFrame('x', index=range(4), columns=list('ABC'))
df
A B C
0 x x x
1 x x x
2 x x x
3 x x x
df['new'] = 'y'
# Same as,
# df.loc[:, 'new'] = 'y'
df
A B C new
0 x x x y
1 x x x y
2 x x x y
3 x x x y
对象列的注释
如果您想添加一列空列表,这是我的建议:
生成副本:df.assign(new=0)
如果您需要副本,请使用DataFrame.assign:
df.assign(new='y')
A B C new
0 x x x y
1 x x x y
2 x x x y
3 x x x y
而且,如果您需要为多个此类列分配相同的值,这很简单,
c = ['new1', 'new2', ...]
df.assign(**dict.fromkeys(c, 'y'))
A B C new1 new2
0 x x x y y
1 x x x y y
2 x x x y y
3 x x x y y
多列分配
最后,如果您需要为多个列分配不同的值,您可以使用assign
带着字典。
c = {'new1': 'w', 'new2': 'y', 'new3': 'z'}
df.assign(**c)
A B C new1 new2 new3
0 x x x w y z
1 x x x w y z
2 x x x w y z
3 x x x w y z