Pandas:为给定列添加DataFrame行

我有以下的DataFrame:

import pandas as pd df = pd.DataFrame({'a': [1,2,3], 'b': [2,3,4], 'c':['dd','ee','ff'], 'd':[5,9,1]}) 

我想添加一列“e”,它是列“a”,“b”和“d”的总和。

通过论坛,我认为这样的事情会工作:

 df['e'] = df[['a','b','d']].map(sum) 

但不是!

我想实现具有列['a','b','d']df作为input的操作。

你可以sum和设置参数axis=1来总结行,这将忽略无数字列:

 In [91]: df = pd.DataFrame({'a': [1,2,3], 'b': [2,3,4], 'c':['dd','ee','ff'], 'd':[5,9,1]}) df['e'] = df.sum(axis=1) df Out[91]: abcde 0 1 2 dd 5 8 1 2 3 ee 9 14 2 3 4 ff 1 8 

如果你只想总结特定的列,那么你可以创build列的列表,并删除你不感兴趣的列:

 In [98]: col_list= list(df) col_list.remove('d') col_list Out[98]: ['a', 'b', 'c'] In [99]: df['e'] = df[col_list].sum(axis=1) df Out[99]: abcde 0 1 2 dd 5 3 1 2 3 ee 9 5 2 3 4 ff 1 7 

如果你只有几列来总结,你可以写:

 df['e'] = df.a + df.b + df.d 

这会创build新的列e ,其值为:

  abcde 0 1 2 dd 5 8 1 2 3 ee 9 14 2 3 4 ff 1 8 

对于更长的列列表,EdChum的答案是首选。