Pandas 带 bin 的 groupby 值

Pandas groupby values with bin

这似乎是一个简单的问题,但我需要你的帮助。

比如我有df:

x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
y = [2, 1, 3, 1, 8, 9, 6, 7, 4, 6]

如何在 1 到 5 和 6 到 10 的范围内对 'x' 进行分组,并计算这两个 bin 的 'y' 平均值? 我希望获得像这样的新 df:

x_grpd = [5, 10]
y_grpd = [3, 6.4]

范围'x'作为示例给出。理想情况下,我希望能够设置任何 int 值以获得不同的 bin 数量。

您可以使用 cut and groupby.mean:

bins = [5, 10]
df2 = (df
 .groupby(pd.cut(df['x'], [0]+bins,
                 labels=bins,
                 right=True)) 
 ['y'].mean()
 .reset_index()
)

输出:

    x    y
0   5  3.0
1  10  6.4