熊猫按 Q1 和 Q3 的聚合分组



我有一个从这个命令生成的示例数据集

df = pd.DataFrame({"A": list(range(1, 21))}, "B": ["a"]*10 + ["b"]*10})

所以,我的数据看起来像这样

A   B
1   a
2   a
3   a
4   a
5   a
6   a
7   a
8   a
9   a
10  a
11  b
12  b
13  b
14  b
15  b
16  b
17  b
18  b
19  b
20  b

我想按 B 列获取第一个分位数 (Q1( 和第三个分位数 (Q3( 的输出组。 预期输出应为

B     Q1     Q3
a   3.25   7.75
b  13.25  17.75

我尝试按聚合进行分组,如下所示

df.groupby("B").agg({"A": np.quantile(0.25), "A": np.quantile(0.75)})

但它不起作用,因为 np.quantile 需要解析输入数组和阈值。 我可以有你的建议如何获得预期的输出吗? 我想应用于相当大的真实数据。 谢谢。

DataFrameGroupBy.quantileSeries.unstack一起使用并重命名列:

df1 = (df.groupby("B")['A']
.quantile([0.25, 0.75])
.unstack()
.rename(columns={0.25:'Q1', 0.75:'Q3'}))
print (df1)
Q1     Q3
B              
a   3.25   7.75
b  13.25  17.75

最新更新