DataFrame:按一列分组并平均其他列

Dee*_*Net 4 python average dataframe pandas pandas-groupby

假设我有以下数据框:

data = pd.DataFrame({'id' : ['1','2','3','4','5'], 'group' : ['1','1','2','1','2'], 
      'state' : ['True','False','False','True','True'], 'value' : [11,12,5,8,3]})
Run Code Online (Sandbox Code Playgroud)

我想创建一个新的 DataFrame,保留 3 列:组 ('1''2'),并对列'state'和进行平均'value',因此 DataFrame 将是:

grouped_averaged = pd.DataFrame({'group' : ['1','2'], 'average_state' : [0.66,0.5], 'value' : [7,3]})
Run Code Online (Sandbox Code Playgroud)

Qua*_*ang 5

您只需groupby

data['state'] = data['state'].eq('True')
data.drop('id',axis=1).groupby('group', as_index=False).mean()
Run Code Online (Sandbox Code Playgroud)

输出:

  group     state      value
0     1  0.666667  10.333333
1     2  0.500000   4.000000
Run Code Online (Sandbox Code Playgroud)