亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

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 關注
  • 724 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號