我很难找到正确的代码来向数据框中添加一行,该行是该数据框中现有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")
答案 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为我工作。