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