以特定方式组合一组数字

问题描述 投票:0回答:1

我想将一组从 100(含)到 200(含)的数字拆分到 bin 中。需要将数字分割为以下区间:[100, 135)、[135, 160)、[160, 175)、[175, 190)、[190, 200]。不幸的是,目前我还没有找到一个功能可以完美解决我的问题

我尝试过 pd.cut 函数,其

right
参数设置为
False
,但所有可能间隔的输出为: [100, 135), [135, 160), [160, 175), [ 175, 190), [190, 200]。不同之处在于我需要最后一个间隔包含 200(所以是 [190, 200],而不是 [190, 200))。

python pandas numbers
1个回答
0
投票

您可以使用

pandas.cut
pandas.DataFrame.groupby
,您只需使最后一个 bin 右边界大于您想要的实际数字,例如
201
200.1
,因为您指定了
right=False
:

nums = pd.Series(range(100, 201))  
bins_with_labels = pd.cut(
    x=nums,
    bins=[100, 135, 160, 175, 190, 201],  # You need to use a number larger than 
    labels=['[100, 135)', '[135, 160)', '[160, 175)', '[175, 190)', '[190, 200]'],
    right=False,
    include_lowest=True,
)
grouped = nums.groupby(bins_with_labels).apply(list)
grouped

输出:

[100, 135)  [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134]
[135, 160)  [135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159]
[160, 175)  [160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174]
[175, 190)  [175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189]
[190, 200]  [190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200]
© www.soinside.com 2019 - 2024. All rights reserved.