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
这似乎是一个简单的问题,但我需要你的帮助。
比如我有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