Python 向数据框中添加一行,该行是现有两行的总和

Python 向数据框中添加一行,该行是现有两行的总和,python,pandas,sum,row,Python,Pandas,Sum,Row,我很难找到正确的代码来向数据框中添加一行,该行是数据框中现有两行的总和 到目前为止,我的代码是: 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

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

到目前为止,我的代码是:

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”的总和

下面是我的尝试,但我似乎无法理解!如果我靠近了,请告诉我。提前感谢:)


使用
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

你现在的问题似乎是思考太复杂了。其实很简单,就是说,*名为“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对我很有用。

非常感谢,我正在学习pandas,您的解释对我帮助很大!我很高兴能帮上忙。至少在这里,与numpy数组的主要区别在于pandas中的索引不同。浏览文档绝对是个好主意。
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
df3.loc['v']=df3.loc['b'] + df3.loc['d']