python pandas 对每列求和时少了一列

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python pandas 对每列求和时少了一列相关的知识,希望对你有一定的参考价值。

命令如下:
df = pd.read_excel('top8.xlsx')
df
显示如下
a b c d e f g custom product
0 429.60 19.87 32.2 17.12931 27.75 20 429.6 1 1
1 429.60 19.87 32.2 17.12931 27.75 20 429.6 1 2
2 214.80 19.87 16.1 17.12931 13.88 10 214.8 1 1
3 1,074.00 19.87 80.5 17.12931 69.39 50 1074.0 1 2
4 214.80 19.87 16.1 17.12931 13.88 10 214.8 2 1
5 429.60 19.87 32.2 17.12931 27.75 20 429.6 2 2
6 1,074.00 19.87 80.5 17.12931 69.39 50 1074.0 2 1
7 429.60 19.87 32.2 17.12931 27.75 20 429.6 2 2

要对custom和product作为键对a-g列求和
命令如下:
df.groupby(['custom','product']).sum()
显示如下:
b c d e f g
custom product
1 1 39.74 48.3 34.25862 41.63 30 644.4
2 39.74 112.7 34.25862 97.14 70 1503.6
2 1 39.74 96.6 34.25862 83.27 60 1288.8
2 39.74 64.4 34.25862 55.50 40 859.2

结果中没有对a列求和,怎么解决?

我尝试单独对a列求和
df.groupby(['custom','product'])[['a']].sum()
输出如下:
a
custom product
1 1 429.60214.80
2 429.601,074.00
2 1 214.801,074.00
2 429.60429.60
pandas把a列结果直接连接起来了,怎么解决?

参考技术A 原因是你的 a 列是字符串格式不是数值格式,当 groupby 后面不带列名时 pandas 会自动判断所以就忽略掉了 a 列
当 groupby 后面带上 a 列时 pandas 会把求和的字符串连接起来
所以解决这个问题只需要将 a 列转换成 float 就可以

求和,求平均数

 1 import pandas
 2 excel=pandas.read_excel(rF:pandas练习成绩.xlsx,index_col=id,sheet_name=Sheet1)
 3 temp=excel[[score1,score2]]
 4 
 5 row_sum=temp.sum(axis=1)   #默认axis=0,对每一列进行求和
 6 row_mean=temp.mean(axis=1)
 7 
 8 excel[total]=row_sum
 9 excel[average]=row_mean
10 
11 col_mean=excel[[score1,score2,total,average]].mean()  #对每一列进行求平均值
12 col_mean[name]=summary
13 excel=excel.append(col_mean,ignore_index=True)   #在excel表的最后再增加一行
14 print(excel)

 

以上是关于python pandas 对每列求和时少了一列的主要内容,如果未能解决你的问题,请参考以下文章

excel如何计算一列数字的总和?

如何在 Python 中对每列的唯一值求和? [复制]

表格怎么设置每一列自动求和

求和,求平均数

python Dataframe 对每一列求均值,然后加在最后一行怎么做

python数组求和