Как установить ограничение на число при увеличении или уменьшении его в python? - PullRequest
1 голос
/ 22 января 2020

Я хочу увеличить число, когда определенное условие c выполнено, а в другой части я хочу уменьшить это число, но оно должно быть в пределах указанного предела. Условие таково, что есть отметка времени целого дня с интервалом в 15 минут, так что будет всего 96 блоков за 24 часа. Теперь, когда время между 6:00 и 19:00, тогда число должно увеличиться, но до определенного предела c, а когда время между 7:00 и следующим 6:00, оно должно уменьшиться. мой код:

import pandas as pd
import datetime
timeStamp = pd.date_range(start='1/1/2020' , end = '1/1/2020', freq = '15min')
num = 0
numLowerLimit = 0
numHigherLimit = 1
chargeTime = 6
dischargeTime = 19
for t in timeStamp:
   if chargeTime <= t.hour < dischargeTime:
        if numLowerLimit <= num <= numHigherLimit:
            num = num + 0.23
            print(num)
        else:
            num = 1
            print(num)
    else:
        if numLowerLimit <= num <= numHigherLimit:
            num = num - 0.23
            print(num)
        else:
            num = 0
            print(num)

ошибка:

ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

ожидаемый результат:

2020-01-01 06:00:00' - 0.23
2020-01-01 06:15:00' - 0.46
2020-01-01 06:30:00' - 0.69
2020-01-01 06:45:00' - 0.92
2020-01-01 07:00:00' -  1
2020-01-01 07:15:00' -  1
2020-01-01 07:30:00' -  1
.
.
.
2020-01-01 19:00:00' -  1
2020-01-01 19:15:00' -  0.77
2020-01-01 19:30:00' -  0.54
2020-01-01 19:45:00' -  0.31
2020-01-01 20:00:00' -  0.54
2020-01-01 20:15:00' -  0.31
2020-01-01 20:30:00' -  0.08
2020-01-01 20:45:00' -  0
2020-01-01 20:00:00' -  0

1 Ответ

1 голос
/ 22 января 2020

Попробуйте это:

import pandas as pd
import datetime
timeStamp = pd.date_range(start='1/1/2020 06:00:00' , end = '1/1/2020 23:59:00', freq = '15min')
num = 0
numLowerLimit = 0
numHigherLimit = 1
chargeTime = 6
dischargeTime = 19
for t in timeStamp:    
    num = min([num + 0.23, 1]) if chargeTime <= t.hour < dischargeTime else max([num - 0.23, 0])
    print(f'{t} {num:.2f}')   
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...