计算多个组的平均值

rue*_*edi 1 python pandas pandas-groupby

我有一张桌子

Sex     Value1   Value2    City
M       2        1         Berlin
W       3        5         Paris
W       1        3         Paris
M       2        5         Berlin
M       4        2         Paris
Run Code Online (Sandbox Code Playgroud)

我想计算的平均值Value1,并Value2为不同的群体。在我origial数据集我有10个变量(与5个特征,如5个城市最大),我已经缩短到SexCity在这个例子中(2个特性)。结果应该是这样的

       AvgOverall   AvgM    AvgW    AvgBerlin    AvgParis
Value1 2,4          2,6     2       2            2,66   
Value2 3,2          2,6     4       3            3,3
Run Code Online (Sandbox Code Playgroud)

我熟悉group by并尝试过

df.groupby('City').mean()
Run Code Online (Sandbox Code Playgroud)

但在这里我们也Sex遇到了计算中的问题。有谁知道如何解决这个问题?提前致谢!

jez*_*ael 5

您可以按 2 列分组到 2 个数据框,然后concat也可以使用数字列的方式(非数字除外):

df1 = df.groupby('City').mean().T
df2 = df.groupby('Sex').mean().T

df3 = pd.concat([df.mean().rename('Overall'), df2, df1], axis=1).add_prefix('Avg')
print (df3)
        AvgOverall      AvgM  AvgW  AvgBerlin  AvgParis
Value1         2.4  2.666667   2.0        2.0  2.666667
Value2         3.2  2.666667   4.0        3.0  3.333333
Run Code Online (Sandbox Code Playgroud)