在Pandas数据帧中插入求和行时如何保留列标题

我有一个数据帧:

       Name    y1    y2   y3                  
 1     Ben     01    02   03
 2     Jane    04    05   06
 3     Sarah   07    07   06

我试图在我的数据框中添加一行,它提供了每列中的总行数.我的代码是:

import pandas as pd

df = pd.DataFrame(np.insert(df.values, 0, values=[df.sum(axis=0)], axis=0))
df.set_value(0, 0,'total')
df.head()

这很成功,但也删除了我的列名,如下所示:

       0       1     2    3                     
 0     Total   12    14   15
 1     Ben     01    02   03
 2     Jane    04    05   06
 3     Sarah   07    07   06

而不是按照需要返回:

       Name    y1    y2   y3                      
 0     Total   12    14   15
 1     Ben     01    02   03
 2     Jane    04    05   06
 3     Sarah   07    07   06

我试过插入

Index(['Name'], name=df.index.name)

df = pd.DataFrame(np.insert(df.values, 0, values=[df.sum(axis=0)], Index(['Name'], name=df.index.name) axis=0))

但这只是返回错误

TypeError: unhashable type: ‘Index’

我哪里错了?

最佳答案 使用np.insert的解决方案应该非常快,但是必须首先使用非数字列创建索引:

#create index from `Name` column
df = df.set_index('Name')

#add first value to index
idx = np.insert(df.index, 0, 'Total')
#add columns and index parameters to DataFrame contructor and last reset index
df = pd.DataFrame(np.insert(df.values, 0, df.sum(), axis=0), 
                  columns=df.columns, 
                  index=idx).reset_index()
print (df)
    Name  y1  y2  y3
0  Total  12  14  15
1    Ben   1   2   3
2   Jane   4   5   6
3  Sarah   7   7   6
点赞