我有一个数据帧,类似
name perc score
a 0.2 40
b 0.4 89
c 0.3 90
我想要一个总行,其中perc有一个平均聚合,score有一个和聚合。输出应该像
name perc score
a 0.2 40
b 0.4 89
c 0.3 90
total 0.3 219
我希望它作为一个数据帧输出,因为我需要使用它来构建绘图。现在,我试着做
df.loc['total'] = df.sum()
但这也提供了百分比列的总和,而我想要百分比的平均值。如何在熊猫身上做到这一点?
试试这个:
df.loc['total'] = [df['perc'].mean(), df['score'].sum()]
输出:
perc score
name
a 0.20 40.0
b 0.40 89.0
c 0.30 90.0
total 0.30 219.0
如果对列进行切片更方便,可以执行以下操作:
(将第一列a
(0(与列b
和c
(1和2(的平均值相加(
df = pd.DataFrame(
{
'a':[1, 2, 3, 4, 5],
'b':[10, 20, 30, 40, 50],
'c':[100, 200, 300, 400, 500]
}
)
a b c
0 1 10 100
1 2 20 200
2 3 30 300
3 4 40 400
4 5 50 500
df.loc['total'] = pd.concat([df.iloc[:,0:1].sum(), df.iloc[:,1:].mean()])
a b c
0 1.0 10.0 100.0
1 2.0 20.0 200.0
2 3.0 30.0 300.0
3 4.0 40.0 400.0
4 5.0 50.0 500.0
total 15.0 30.0 300.0