我有一个数据帧:
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