用于在pandas中创建新列的按键高效方法

时间:2017-01-21 20:40:21

标签: python pandas

是否有更有效的方法在pandas数据框df中创建多个新列,初始化为零而不是:

for col in add_cols:
   df.loc[:, col] = 0

4 个答案:

答案 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