向数据框添加一行,这是2个现有行的总和

时间:2018-08-13 14:53:37

标签: python pandas sum row

我很难找到正确的代码来向数据框中添加一行,该行是该数据框中现有2行的总和。

到目前为止,我将其作为代码:

df = pd.DataFrame(np.random.randint(0,100,size=(20, 5)), columns=['First','Second','Third','Fourth','Fifth'],index=list('abcdefghijklmnopqrst'))

df2 = pd.DataFrame({'First':['0'],'Second':['1'],'Third':['-1'],'Fourth':['2'],'Fifth':['-2']},index=["u"])

df3 = pd.concat([df,df2],axis=0,join='inner')
print(df3)

我想在df3中添加一行“ v”,其中“ v”行是df3的“ b”行和“ d”行之和

以下是我的尝试,但我似乎无法弄清楚!请让我知道我是否靠近任何地方。在此先感谢:)

df4 = df3["b","d"].sum()
df4= df3["b"].add(df3["d"], index=["v"])
df3.loc['v'] = df.sum("b", "d")
df3.loc['v',"First','Second','Third','Fourth','Fifth'] = df3.sum("b", "d")

3 个答案:

答案 0 :(得分:2)

使用append

df3.append(df3.loc[["b","d"],:].sum().to_frame('v').T)
Out[520]: 
  First Second Third Fourth Fifth
a    27     77    54     39    23
b    84     37    99     87    37
c    63     25    11     71    44
d    70      4    71     63    86
e    50     78    70      6    78
f    53     50    31     72    87
g    10      5    28     79    56
h    68     15    13     71    38
i    17     12    12     15    46
j    37     90    24      2    36
k    47     91    55     54     9
l     4     10    12     18    27
m    68     86    83     83    11
n    41     46    93     15     8
o    80     29    68     94    16
p    36     81    43     61    44
q     5     10    92     47    40
r    70      0    58     55    36
s    22     76    99     21    61
t    24     75     5     81    47
u     0      1    -1      2    -2
v   154     41   170    150   123

答案 1 :(得分:2)

df3.loc['v']=df3.loc['b'] + df3.loc['d']

答案 2 :(得分:2)

您现在的问题似乎是思维方式过于复杂。这真的很简单,只需说*行称为“ v”就是行称为“ b”和行称为“ d”之和。或以熊猫语语法:

df.loc['v'] = df.loc['b'] + df.loc['d']

如果确实需要使用sum()函数,则必须了解它在数据帧上的工作方式。在您的情况下,您首先必须选择相应的行(它将以pandas.DataFrame的形式返回这些行的视图),然后使用该视图的sum()函数,如下所示:

df.loc['v'] = df.loc[['b','d']].sum()

使用pandas 0.23.3和python 3.6为我工作。