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个城市最大),我已经缩短到Sex和City在这个例子中(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遇到了计算中的问题。有谁知道如何解决这个问题?提前致谢!
您可以按 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)
| 归档时间: |
|
| 查看次数: |
62 次 |
| 最近记录: |