首页 > 解决方案 > 如何根据列中的条件进行计算?

问题描述

当有一组连续跟随时,我想进行计算。

我有一个关于压缩机如何工作的数据库。每 5 分钟我会得到压缩机的状态,如果它是开/关的,并且此时消耗的电量。该列On_Off1压缩机工作(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)。

我想自动执行此操作我是熊猫的新手,但我想不出办法。

标签: pythonpandasseries

解决方案


我要做的是创建一个变量,用一个整数作为 ID 创建一个表示每个活动周期的变量,然后按它分组并对Electricity列求和。创建它的一种简单方法是通过累积求和On_Off(数据必须按递增日期排序)并将结果值乘以On_Off列。如果您在 Pandas 中提供可重现的表格示例,我可以快速为您编写解决方案。

希望能帮助到你


推荐阅读