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']