我有以下DataFrame:
In [1]: import pandas as pd df = pd.DataFrame({'a': [1,2,3], 'b': [2,3,4], 'c':['dd','ee','ff'], 'd':[5,9,1]}) df Out [1]: a b c d 0 1 2 dd 5 1 2 3 ee 9 2 3 4 ff 1
我想增加一列'e'是列的总和'a','b'和'd'。
'e'
'a'
'b'
'd'
在各个论坛上,我认为这样会起作用:
df['e'] = df[['a','b','d']].map(sum)
但事实并非如此。
我想知道适当的操作与列的列表['a','b','d']和df作为输入。
['a','b','d']
df
您可以sum设置参数axis=1以对行求和,这将不忽略任何数字列:
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]: a b c d e 0 1 2 dd 5 8 1 2 3 ee 9 14 2 3 4 ff 1 8
如果您只想汇总特定的列,则可以创建列的列表并删除您不感兴趣的列:
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]: a b c d e 0 1 2 dd 5 3 1 2 3 ee 9 5 2 3 4 ff 1 7