为了账号安全,请及时绑定邮箱和手机立即绑定

python如何使用groupby对数据进行分类并计算其他列的平均值

python如何使用groupby对数据进行分类并计算其他列的平均值

潇湘沐 2021-10-19 14:53:47
我有一个数据框,如下所示。我想使用“part1”列作为将数据分类为 3 个部分(每个部分具有相同数量的数据集)的基准,并计算每个组的 part2 均值的均值。如row0和row1为groupB,均值为(0.67+(-0.03))/2。import pandas as pddf = pd.DataFrame({    "date":["20130101","20130101","20130103","20130103","20130105","20130105"],    "part1":[0.5,0.7,1.3,1.5,0.1,0.3],    "part2":[0.67,-0.03,1.95,-3.25,-0.3,0.6]})    date    part1   part2   output0   20130101    0.5 0.67    0.321   20130101    0.7 -0.03   0.322   20130103    1.3 1.95    -0.653   20130103    1.5 -3.25   -0.654   20130105    0.1 -0.3    0.155   20130105    0.3 0.6 0.15
查看完整描述

3 回答

?
慕容森

TA贡献1853条经验 获得超18个赞

如果你想计算每天的平均值,你可以使用groupby如下:


import pandas as pd

df = pd.DataFrame({

    "date":["20130101","20130101","20130103","20130103","20130105","20130105"],

    "part1":[0.5,0.7,1.3,1.5,0.1,0.3],

    "part2":[0.67,-0.03,1.95,-3.25,-0.3,0.6]

})

df.groupby("date").mean().reset_index()

结果:


       date  part1  part2

0  20130101    0.6   0.32

1  20130103    1.4  -0.65

2  20130105    0.2   0.15


查看完整回答
反对 回复 2021-10-19
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

您可以by为熊猫groupby方法的参数传递一个函数。


from functools import partial

import pandas as pd


df = pd.DataFrame({

    "date":["20130101","20130101","20130103","20130103","20130105","20130105"],

    "part1":[0.5,0.7,1.3,1.5,0.1,0.3],

    "part2":[0.67,-0.03,1.95,-3.25,-0.3,0.6]

})



def grouper(df, val):

    foo = df.iloc[val]['part1']

    if foo > 0.0 and foo < 0.4:

         return 0

    elif foo > 0.3 and foo < 1.0:

         return 1

    elif foo > 1.0:

         return 2


grouped = df['part2'].groupby(by=partial(grouper, df)).mean()

这导致


1    0.15

2    0.32

3   -0.65

Name: part2, dtype: float64


查看完整回答
反对 回复 2021-10-19
  • 3 回答
  • 0 关注
  • 696 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号