gpt4 book ai didi

python - 如何计算范围而不是箱中的列值?

转载 作者:行者123 更新时间:2023-12-05 03:34:43 27 4
gpt4 key购买 nike

我正在尝试找出如何巧妙地计算数据框列中属于多个自定义范围的值的数量。我意识到装箱是这方面的常用技术,但我不确定这是我在这里寻找的。

假设我有以下数据框:

            Date     Value1     Value2
---------------------------------------
0 4/15/2018 4 4
1 4/16/2018 4 3
2 4/17/2018 2 7
3 4/18/2018 4 3
4 4/19/2018 3 8
5 4/20/2018 9 4
6 4/21/2018 9 6
7 4/22/2018 8 3
8 4/23/2018 9 5
9 4/24/2018 9 5
10 4/25/2018 10 5
11 4/26/2018 15 2
12 4/27/2018 18 2
13 4/28/2018 17 3
14 4/29/2018 6 4
...

现在,我有三个自定义范围(包括所有值):1 - 4、7 - 10 和 13 - 20。

我想找出“Value1”中有多少值(或行)落在每个范围内。虽然我知道装箱可以像 bins = [0,4,7,13,20] 一样使用,但这并没有实现我正在寻找的东西,因为它试图将每个值放置/除以柱成一个箱子。我只想找到落入我的范围内的值(行)的数量。这意味着我不关心 5、6、11、12、21、22、23 等的值。为了理解结果,我需要为我的范围分配标签,以便 1 - 4 被标记为“范围 1”,7 - 10 标记为“范围 2”,13 - 20 标记为“范围 3”。

所以我正在尝试生成以下输出数据帧:

            Date     Value1     Value2       Range
---------------------------------------------------
0 4/15/2018 4 4 Range 1
1 4/16/2018 4 3 Range 1
2 4/17/2018 2 7 Range 1
3 4/18/2018 4 3 Range 1
4 4/19/2018 3 8 Range 1
5 4/20/2018 9 4 Range 2
6 4/21/2018 9 6 Range 2
7 4/22/2018 8 3 Range 2
8 4/23/2018 9 5 Range 2
9 4/24/2018 9 5 Range 2
10 4/25/2018 10 5 Range 2
11 4/26/2018 15 2 Range 3
12 4/27/2018 18 2 Range 3
13 4/28/2018 17 3 Range 3
14 4/29/2018 6 4 No_range

这样我就可以生成以下摘要数据框:

         Range    Frequency   
----------------------------
0 Range 1 5
1 Range 2 6
2 Range 3 3

这在 python 中如何实现?

最佳答案

  1. 使用 Series.between 指定范围(默认情况下包括两个端点)
  2. 使用 np.select 生成 Range
ranges = {
'Range 1': df['Value1'].between(1, 4),
'Range 2': df['Value1'].between(7, 10),
'Range 3': df['Value1'].between(13, 20),
}
df['Range'] = np.select(ranges.values(), ranges.keys(), default='No range')

# Date Value1 Value2 Range
# 0 4/15/2018 4 4 Range 1
# 1 4/16/2018 4 3 Range 1
# 2 4/17/2018 2 7 Range 1
# 3 4/18/2018 4 3 Range 1
# 4 4/19/2018 3 8 Range 1
# 5 4/20/2018 9 4 Range 2
# 6 4/21/2018 9 6 Range 2
# 7 4/22/2018 8 3 Range 2
# 8 4/23/2018 9 5 Range 2
# 9 4/24/2018 9 5 Range 2
# 10 4/25/2018 10 5 Range 2
# 11 4/26/2018 15 2 Range 3
# 12 4/27/2018 18 2 Range 3
# 13 4/28/2018 17 3 Range 3
# 14 4/29/2018 6 4 No range

关于python - 如何计算范围而不是箱中的列值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70100132/

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