如何按箱计算列的平均值?

时间:2019-07-28 21:24:06

标签: python pandas

我有以下熊猫DataFrame df

bins    var1   var2
[0, 2)  10     22
[2, 6)  15     20
[2, 6)  16     20
[2, 6)  14     19
[0, 2)  9      23
[0, 2)  10     22
[0, 2)  8      22

我想估算每个var1值的平均var2bins

这是预期的结果:

bins    var1   var2
[0, 2)  9.25   22.25
[2, 6)  15     19.7

我该怎么办?这是我尝试过的方法,但未返回预期结果:

import pandas as pd

avg_bins = pd.DataFrame

for c in df.columns:
  b = df.groupby("bins").agg({c: "mean"}).reset_index()
  if avg_bins.empty:
    avg_bins = b
  else:
    avg_bins = pd.concat([avg_bins,b], axis=0)

avg_per_ri_bin

1 个答案:

答案 0 :(得分:0)

可以做到这两个(第一个少的代码,第二个更基本的)

df2 = df.groupby(by='bins').agg('mean')

OR

df2=pd.DataFrame(columns=df.columns)
df2['bins']=df['bins'].unique()

for i,row in df2.iterrows():
    df2.loc[i]['var1'] = df[df['bins']==row['bins']]['var1'].mean()
    df2.loc[i]['var2'] = df[df['bins']==row['bins']]['var2'].mean()