是否有更有效的方法在pandas数据框df
中创建多个新列,初始化为零而不是:
for col in add_cols:
df.loc[:, col] = 0
答案 0 :(得分:2)
更新:使用@jeff's method,但动态执行此操作:
i
OLD回答:
另一种方法:
In [208]: add_cols = list('xyz')
In [209]: df.assign(**{i:0 for i in add_cols})
Out[209]:
a b c x y z
0 4 8 6 0 0 0
1 3 7 0 0 0 0
2 4 0 1 0 0 0
3 5 4 5 0 0 0
4 1 3 0 0 0 0
演示:
df[add_cols] = pd.DataFrame(0, index=df.index, columns=add_cols)
答案 1 :(得分:2)
In [13]: df = pd.DataFrame(np.random.randint(0, 10, (5,3)), columns=list('abc'))
In [14]: df
Out[14]:
a b c
0 7 2 3
1 7 0 7
2 5 1 5
3 9 1 4
4 2 1 4
In [15]: df.assign(x=0, y=0, z=0)
Out[15]:
a b c x y z
0 7 2 3 0 0 0
1 7 0 7 0 0 0
2 5 1 5 0 0 0
3 9 1 4 0 0 0
4 2 1 4 0 0 0
答案 2 :(得分:1)
这是一个黑客:
[df.insert(0, col, 0) for col in add_cols]
答案 3 :(得分:1)
您可以使用类似dict的语法处理DataFrame:
for col in add_cols:
df[col] = 0