gpt4 book ai didi

python - Bin 使用累积和而不是 python 中的观察值

转载 作者:行者123 更新时间:2023-12-02 02:38:23 27 4
gpt4 key购买 nike

假设我有一个数据框,其中有一列如下:

Weight
1
1
0.75
0.5
0.25
0.5
1
1
1
1

我想创建两个数据箱并向数据框中添加一列,以显示每行所在的数据箱,但我不想对观测值进行分箱(即前 5 个观测值到达数据箱 1,最后一个观测值到达数据箱) 5 个放入垃圾箱 2)。相反,我希望进行分箱,使每个分箱的权重总和相等或尽可能接近相等,而不更改列的顺序。

所以,我想要的结果是

Weight  I want  Not this
1 1 1
1 1 1
0.75 1 1
0.5 1 1
0.25 1 1
0.5 1 2
1 2 2
1 2 2
1 2 2
1 2 2

Pandas 中是否有内置的东西已经做到了这一点,或者有人可以分享关于如何实现这一点的任何想法吗?谢谢!

最佳答案

这应该可以做到:

df = pd.DataFrame(
{'Weight': [1, 1, 0.75, 0.5, 0.25, 0.5, 1, 1, 1, 1]})
weight_sum = df.Weight.sum()
df['bin'] = 1
df.loc[df.Weight.cumsum() > weight_sum / 2, 'bin'] = 2

print(df)

输出:

   Weight  bin
0 1.00 1
1 1.00 1
2 0.75 1
3 0.50 1
4 0.25 1
5 0.50 1
6 1.00 2
7 1.00 2
8 1.00 2
9 1.00 2

关于python - Bin 使用累积和而不是 python 中的观察值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63995367/

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