我有一个大小为(1500,5)的pandas数据框A和一个包含以下内容的字典:
D
Out[121]:
{'newcol1': 'a',
'newcol2': 2,
'newcol3': 1}
对于字典中的每个键我想在数据框A中创建一个新列,其中包含字典中的值(每列的所有行的值相同)
最后 A应该是大小(1500,8)
是否有" python"这样做的方法?谢谢!
答案 0 :(得分:5)
您可以将concat
与DataFrame
构造函数一起使用:
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