python - 如何根据列中的条件进行计算?
问题描述
当有一组连续跟随时,我想进行计算。
我有一个关于压缩机如何工作的数据库。每 5 分钟我会得到压缩机的状态,如果它是开/关的,并且此时消耗的电量。该列On_Off
有1
压缩机工作(ON)和 0
关闭的时间。
Compresor = pd.Series([0,0,1,1,1,0,0,1,1,1,0,0,0,0,1,1,1,0], index = pd.date_range('1/1/2012', periods=18, freq='5 min'))
df = pd.DataFrame(Compresor)
df.index.rename("Date", inplace=True)
df.set_axis(["ON_OFF"], axis=1, inplace=True)
df.loc[(df.ON_OFF == 1), 'Electricity'] = np.random.randint(4, 20, df.sum())
df.loc[(df.ON_OFF < 1), 'Electricity'] = 0
df
ON_OFF Electricity
Date
2012-01-01 00:00:00 0 0.0
2012-01-01 00:05:00 0 0.0
2012-01-01 00:10:00 1 4.0
2012-01-01 00:15:00 1 10.0
2012-01-01 00:20:00 1 9.0
2012-01-01 00:25:00 0 0.0
2012-01-01 00:30:00 0 0.0
2012-01-01 00:35:00 1 17.0
2012-01-01 00:40:00 1 10.0
2012-01-01 00:45:00 1 5.0
2012-01-01 00:50:00 0 0.0
2012-01-01 00:55:00 0 0.0
2012-01-01 01:00:00 0 0.0
2012-01-01 01:05:00 0 0.0
2012-01-01 01:10:00 1 14.0
2012-01-01 01:15:00 1 5.0
2012-01-01 01:20:00 1 19.0
2012-01-01 01:25:00 0 0.0
我想做的是只有当有一组时才增加耗电量,然后再做一个Data.Frame
。例如:
在此示例中,压缩机第一次打开是在 00:20 -00:30 之间。在此期间它消耗了 25 (10+10+5)。第二次持续时间较长(00:50-01:15),并在此间隔 50 内消耗(10+10+10+10+10+5+5)。第三次消耗 20 (10 + 10)。
我想自动执行此操作我是熊猫的新手,但我想不出办法。
解决方案
我要做的是创建一个变量,用一个整数作为 ID 创建一个表示每个活动周期的变量,然后按它分组并对Electricity
列求和。创建它的一种简单方法是通过累积求和On_Off
(数据必须按递增日期排序)并将结果值乘以On_Off
列。如果您在 Pandas 中提供可重现的表格示例,我可以快速为您编写解决方案。
希望能帮助到你
推荐阅读
- c# - 当前上下文中不存在名称“模型”
- mysql - 如果存在 2 个值,SQL 防止重复条目
- c# - 如何解决异常 **System.MissingMethodException:** '找不到方法:无效 Amazon.S3.Transfer.TransferUtility.Upload()' (Xamarin AWS S3)
- python-3.x - 如何将字符串从循环附加到单个输出行?
- swift - Swift 通知已发送但未收到
- python - Python - 根据相对高度过滤局部极值
- javascript - 在 Typescript 的 beforeEach 中使用 Enzyme 时出现警告错误
- excel - 仅清除包含公式的单元格
- r - 从其他数据集中替换数据集的数字列
- android-studio - 多个每日重复通知在其间隔之间的特定时间