gpt4 book ai didi

python - Pandas:按两列分组并以 LONG 格式查找 3 列的第 25、中位数、第 75 个百分位数和平均值

转载 作者:行者123 更新时间:2023-11-28 21:36:04 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Pass percentiles to pandas agg function

(12 个回答)


3年前关闭。




这是一个示例数据帧:

df = pd.DataFrame([[1, 1, 10, 11, 12],
[1, 1, 13, 14, 15],
[1, 2, 16, 17, 18],
[1, 2, 19, 20, 21],
[1, 3, 22, 23, 24],
[1, 3, 25, 26, 27],
[1, 4, 28, 29, 30],
[1, 4, 31, 32, 33],
[1, 4, 34, 35, 36],
[1, 4, 37, 38, 39],
[1, 4, 40, 41, 42]])

df.columns = ['c1', 'c2', 'p1', 'p2', 'p3']
print(df)

给出:
    c1  c2  p1  p2  p3
0 1 1 10 11 12
1 1 1 13 14 15
2 1 2 16 17 18
3 1 2 19 20 21
4 1 3 22 23 24
5 1 3 25 26 27
6 1 4 28 29 30
7 1 4 31 32 33
8 1 4 34 35 36
9 1 4 37 38 39
10 1 4 40 41 42

到目前为止我做了什么:
example = df.groupby(['c1', 'c2'])['p1', 'p2', 'p3'].quantile([0.25, 0.50, 0.75]).unstack().reset_index()

print(example)

给出:
  c1 c2     p1                  p2                  p3             
0.25 0.5 0.75 0.25 0.5 0.75 0.25 0.5 0.75
0 1 1 10.75 11.5 12.25 11.75 12.5 13.25 12.75 13.5 14.25
1 1 2 16.75 17.5 18.25 17.75 18.5 19.25 18.75 19.5 20.25
2 1 3 22.75 23.5 24.25 23.75 24.5 25.25 24.75 25.5 26.25
3 1 4 31.00 34.0 37.00 32.00 35.0 38.00 33.00 36.0 39.00

我上面的输出是正确的,可以找到百分位数,但我也想要 Average/Mean + 以上格式在 wide格式, 我希望它在 long格式。

所以,

wide格式,我想要另一列名为 average
  c1 c2     p1                          p2                              p3             
0.25 0.5 0.75 average 0.25 0.5 0.75 average 0.25 0.5 0.75 average
0 1 1 10.75 11.5 12.25 X 11.75 12.5 13.25 X 12.75 13.5 14.25 X
1 1 2 16.75 17.5 18.25 X 17.75 18.5 19.25 X 18.75 19.5 20.25 X
2 1 3 22.75 23.5 24.25 X 23.75 24.5 25.25 X 24.75 25.5 26.25 X
3 1 4 31.00 34.0 37.00 X 32.00 35.0 38.00 X 33.00 36.0 39.00 X

我正在寻找的最终输出是上表 long格式如下:
    c1      c2      0.25    0.50    0.75    average      p
1 1 10.75 11.5 12.25 X 1
1 1 11.75 12.5 13.25 X 2
1 1 2.75 13.5 14.25 X 3
1 2 16.75 17.5 18.25 X 1
1 2 17.75 18.5 19.25 X 2
1 2 18.75 19.5 20.25 X 3

我有两个麻烦.. 我不知道如何以及在哪里包含计算 mean 的部分连同 25th, 50th and 75th percentile ,并将其转换为 long格式..

最佳答案

使用 describe :

df.groupby(['c1', 'c2']).describe().stack(level=0)[['25%', '50%', '75%', 'mean']]

关于python - Pandas:按两列分组并以 LONG 格式查找 3 列的第 25、中位数、第 75 个百分位数和平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51585660/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com