Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将值较少的行添加到数据帧_Python_Pandas_Dataframe_Sum_Row - Fatal编程技术网

Python 将值较少的行添加到数据帧

Python 将值较少的行添加到数据帧,python,pandas,dataframe,sum,row,Python,Pandas,Dataframe,Sum,Row,给出一个数据帧示例: import pandas as pd import numpy as np values = np.array([ [0, 0.5, 1, 0, 0, 3], [1, 0, 0, 1, 1, 0 ], [0, 0.5, 0, 0, 2, 1], [0, 0, 0, 0, 4, 0], ]) indexes= 'a','b','c','d' columns='ab','bc','cd','de','ef','fg'

给出一个数据帧示例:

import pandas as pd
import numpy as np

values = np.array([
    [0, 0.5, 1, 0, 0, 3],
    [1, 0, 0, 1, 1, 0 ],
    [0, 0.5, 0, 0, 2, 1],
    [0, 0, 0, 0, 4, 0],        
 ])

 indexes= 'a','b','c','d'

 columns='ab','bc','cd','de','ef','fg'

 df = pd.DataFrame(index=indexes,columns=columns, data=values)

 print(df)
这看起来像:

    ab   bc   cd   de   ef   fg
a  0.0  0.5  1.0  0.0  0.0  3.0
b  1.0  0.0  0.0  1.0  1.0  0.0
c  0.0  0.5  0.0  0.0  2.0  1.0
d  0.0  0.0  0.0  0.0  4.0  0.0
期望输出:

    ab   bc   cd   de   ef   fg
a  0.0  0.5  1.0  0.0  0.0  3.0
b  1.0  0.0  0.0  1.0  1.0  0.0
c  0.0  0.5  0.0  0.0  2.0  1.0
d  0.0  0.0  0.0  0.0  4.0  0.0
e  Nan  Nan  Nan  NAn  7.0  4.0
是否可以添加一行,其中只显示最后两列的总和?(当然,在各栏下方)


谢谢你的关注

编辑:哦。谢谢你的澄清。创建一个新行,并将最后两列的总和指定给它。
iloc
索引器的格式为[行,列]。因此,我们需要
所有行,但只需要最后两列
-2:

df.loc['e'] = df.iloc[:,-2:].sum()
结果:

>>> df
   ab   bc   cd   de   ef   fg
a  0.0  0.5  1.0  0.0  0.0  3.0
b  1.0  0.0  0.0  1.0  1.0  0.0
c  0.0  0.5  0.0  0.0  2.0  1.0
d  0.0  0.0  0.0  0.0  4.0  0.0
e  NaN  NaN  NaN  NaN  7.0  4.0
>>> pd.concat([df,df.iloc[-2,:] + df.iloc[-1:]])
    ab   bc   cd   de   ef   fg
a  0.0  0.5  1.0  0.0  0.0  3.0
b  1.0  0.0  0.0  1.0  1.0  0.0
c  0.0  0.5  0.0  0.0  2.0  1.0
d  0.0  0.0  0.0  0.0  4.0  0.0
d  0.0  0.5  0.0  0.0  6.0  1.0

旧答案:
我想你指的是最后两排

你可以在这里用

结果:

>>> df
   ab   bc   cd   de   ef   fg
a  0.0  0.5  1.0  0.0  0.0  3.0
b  1.0  0.0  0.0  1.0  1.0  0.0
c  0.0  0.5  0.0  0.0  2.0  1.0
d  0.0  0.0  0.0  0.0  4.0  0.0
e  NaN  NaN  NaN  NaN  7.0  4.0
>>> pd.concat([df,df.iloc[-2,:] + df.iloc[-1:]])
    ab   bc   cd   de   ef   fg
a  0.0  0.5  1.0  0.0  0.0  3.0
b  1.0  0.0  0.0  1.0  1.0  0.0
c  0.0  0.5  0.0  0.0  2.0  1.0
d  0.0  0.0  0.0  0.0  4.0  0.0
d  0.0  0.5  0.0  0.0  6.0  1.0
你可以使用loc

df.loc['sum_c_d'] = df[-2:].sum()


        ab  bc  cd  de  ef  fg
a       0   0.5 1   0   0   3
b       1   0.0 0   1   1   0
c       0   0.5 0   0   2   1
d       0   0.0 0   0   4   0
sum_c_d 0   0.5 0   0   6   1

最后两列还是最后两行?也许会给出您想要的输出。好的一点,@Psidom…对不起,我的意思是我想添加一行,在那里我显示最后一列的值的和(在第二列下面),和最后一列的值的和(在最后一列下面)。保持行的其他单元格为空。希望现在清楚!你能以表格的形式给出你想要的输出吗?我已经添加了想要的输出,我输入了Nan,但我希望这些单元格完全为空,但我想这是不可能的…@Paauulus:不客气。很高兴见到你。