Python对数字进行分类

时间:2019-03-04 07:06:26

标签: python

我在名为Availability_365的数据中有一列,该列包含0到365之间的数字。我想要将这些数字归类为1到3的python代码。因此,如果该数字在0到122之间,则应该为转换为1,将数字123-245转换为2,将245-365转换为3。不胜感激,谢谢。

2 个答案:

答案 0 :(得分:0)

您的最后一个条件应该是246-365,否则应将2和3都替换为245,这是不可能的。这是规范中的错误。

您需要进行三项检查:

def convert_365(availability_365: list, a=1, b=2, c=3):
    converted = []
    for number in availability_365:
        if number < 123:
            converted.append(a)
        elif 122 < number <= 245:
            converted.append(b)
        elif number >= 246:
            converted.append(c)
    return converted

#  Making a list from 0 to 365
availability_365 = list(range(0, 366))

print(convert_365(availability_365))

#  Checking the boundaries
print(convert_365(availability_365)[0] == 1)
print(convert_365(availability_365)[122] == 1)
print(convert_365(availability_365)[123] == 2)
print(convert_365(availability_365)[245] == 2)
print(convert_365(availability_365)[246] == 3)
print(convert_365(availability_365)[365] == 3)

答案 1 :(得分:0)

您所描述的基本上是四舍五入。整数除以步长几乎可以直接得到所需的结果,您只需要移位1。

def categorise(num):
    return (num // 123) + 1

print(categorise(0))    # 1
print(categorise(122))  # 1
print(categorise(123))  # 2
print(categorise(245))  # 2
print(categorise(246))  # 3
print(categorise(365))  # 3