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的答案是首选。