python - 如何在python中增加或减少数字时设置限制?
问题描述
我想在满足特定条件时增加一个数字,而在其他部分我想减少该数字,但这应该在指定的限制内。条件就像有一整天的时间戳,间隔为 15 分钟,所以 24 小时总共有 96 个块。现在,当时间在早上 6 点到晚上 7 点之间时,这个数字应该会增加,但要达到一个特定的限制,而当时间在晚上 7 点到第二天早上 6 点之间时,它应该会减少。我的代码是:
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
解决方案
尝试这个:
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}')
推荐阅读
- javascript - Threejs中的“加号”或“X”形波浪
- flutter - webview_flutter 只是在 android 模拟器中显示一个空白屏幕
- python - 通过 python 库使用来自私有注册表的图像创建 docker 服务
- reactjs - 如何从我的 react 应用程序访问 Electron 的进程对象?
- pyspark - 将json文件保存到数据框时如何删除空值
- c# - C# Parallel Array,我不明白为什么 zipFound 是 bool zipFound = false; 任何人都可以向我解释谢谢:)
- java - 在使用 jooq 与 hstore 合并的重复键上
- laravel - 在 laravel 中访问表数据透视表
- faunadb - 如何从动物数据库中的文档中删除特定元素?
- linux - 如何在linux bash中删除除最后5个按日期排序的所有文件