在包含相同值的pandas数据框中添加列

时间:2017-01-27 08:52:56

标签: python pandas

我有一个大小为(1500,5)的pandas数据框A和一个包含以下内容的字典:

D
Out[121]: 
{'newcol1': 'a',
 'newcol2': 2,
 'newcol3': 1}

对于字典中的每个键我想在数据框A中创建一个新列,其中包含字典中的值(每列的所有行的值相同)

最后 A应该是大小(1500,8)

是否有" python"这样做的方法?谢谢!

2 个答案:

答案 0 :(得分:5)

您可以将concatDataFrame构造函数一起使用:

D = {'newcol1': 'a',
 'newcol2': 2,
 'newcol3': 1}

df = pd.DataFrame({'A':[1,2],
                   'B':[4,5],
                   'C':[7,8]})

print (df)
   A  B  C
0  1  4  7
1  2  5  8

print (pd.concat([df, pd.DataFrame(D, index=df.index)], axis=1))
   A  B  C newcol1  newcol2  newcol3
0  1  4  7       a        2        1
1  2  5  8       a        2        1

<强>计时

D = {'newcol1': 'a',
 'newcol2': 2,
 'newcol3': 1}

df = pd.DataFrame(np.random.rand(10000000, 5), columns=list('abcde'))

In [37]: %timeit pd.concat([df, pd.DataFrame(D, index=df.index)], axis=1)
The slowest run took 18.06 times longer than the fastest. This could mean that an intermediate result is being cached.
1 loop, best of 3: 875 ms per loop

In [38]: %timeit df.assign(**D)
1 loop, best of 3: 1.22 s per loop

答案 1 :(得分:4)

设置

README

解决方案

使用A = pd.DataFrame(np.random.rand(10, 5), columns=list('abcde')) d = { 'newcol1': 'a', 'newcol2': 2, 'newcol3': 1 }

assign