2016-02-13 144 views
2

说,我看起来像数据:现在熊猫:选择要添加哪些列

df1 = pandas.DataFrame({'dontTouch1':[0,1,2,3,4,5], 
         'dontTouch2':[0,1,2,3,4,5], 
         'sumThis': [1,1,3,5,8,13]}) 
df2 = pandas.DataFrame({'dontTouch1':[0,1,2,3,4,5], 
         'dontTouch2':[0,1,2,3,4,5], 
         'sumThis': [1,1,3,5,8,13]}) 

,而:

sum_all = df1 + df2 
sum_sumThis = df1['sumThis'] + df2['sumThis'] 

...返回所有列,只有sumThis的总和列,我感兴趣的是创建一个新的DataFrame,其中只有sumThis被添加在一起。那里有干净的内置物吗?

我要么丢失一些明显的东西,要么就不得不使用凌乱的切片方法。谢谢。

回答

2

东西不相当 “整齐建宏”,但也没有完全 “混乱切片方法”(恕我直言):

df3 = df1.copy() 
df3.sumThis += df2.sumThis 
>>> df3 
    dontTouch1 dontTouch2 sumThis 
0 0 0 2 
1 1 1 2 
2 2 2 6 
3 3 3 10 
4 4 4 16 
5 5 5 26 
+0

谢谢,这是一个可接受的“权衡”。 – gustafbstrom

1

我认为你可以使用DataFrame构造:

print pandas.DataFrame({'dontTouch1': df1['dontTouch1'], 
         'dontTouch2': df1['dontTouch2'], 
         'sum': df1['sumThis'] + df2['sumThis'] }) 
    dontTouch1 dontTouch2 sum 
0   0   0 2 
1   1   1 2 
2   2   2 6 
3   3   3 10 
4   4   4 16 
5   5   5 26 
+0

谢谢。这工作。 – gustafbstrom