给定一个示例数据框:

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索引器的格式为[row,col]。因此,我们希望所有行都为:,但仅最后两列为-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

pd.concat([df,df.iloc[-2,:] + df.iloc[-1:]])


结果:

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

关于python - 向Pandas数据框添加值较少的行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43003629/

10-14 18:19
查看更多