pandas 数据框每天的条件计数

Conditional count per day from pandas dataframe

我有一个数据集,每分钟有一个设备的读数(储罐液位),我想创建一个新的数据集(数据框),其中包含每天的样本数量和高于 a 的读数数量设置值。

        Noxious Tank Level.MIN  Noxious Tank Level.MAX           Date_Time
0                         9.32                    9.33 2019-12-31 05:01:00
1                         9.32                    9.34 2019-12-31 05:02:00
2                         9.32                    9.35 2019-12-31 05:03:00
3                         9.31                    9.35 2019-12-31 05:04:00
4                         9.31                    9.35 2019-12-31 05:05:00
...                        ...                     ...                 ...
528175                    2.98                    3.01 2020-12-31 23:56:00
528176                    2.98                    3.02 2020-12-31 23:57:00
528177                    2.98                    3.01 2020-12-31 23:58:00
528178                    2.98                    3.02 2020-12-31 23:59:00
528179                    2.98                    2.99 2021-01-01 00:00:00

使用 lamdba 函数,我可以查看每个值是否溢出(Tank Level > setpoint)——我还通过 Date_Time:

对数据帧进行了索引

df['Overflow'] = df.apply(lambda x: True if x['Noxious Tank Level.MIN'] > 89 else False , axis=1)

                     Noxious Tank Level.MIN  Noxious Tank Level.MAX  Overflow
Date_Time                                                                    
2019-12-31 05:01:00                    9.32                    9.33     False
2019-12-31 05:02:00                    9.32                    9.34     False
2019-12-31 05:03:00                    9.32                    9.35     False
2019-12-31 05:04:00                    9.31                    9.35     False
2019-12-31 05:05:00                    9.31                    9.35     False
...                                     ...                     ...       ...
2020-12-31 23:56:00                    2.98                    3.01     False
2020-12-31 23:57:00                    2.98                    3.02     False
2020-12-31 23:58:00                    2.98                    3.01     False
2020-12-31 23:59:00                    2.98                    3.02     False
2021-01-01 00:00:00                    2.98                    2.99     False

现在我想计算每天的样本数量和 Overflow 列中的 'True' 值的数量,以计算出每天在 Overflow

中的分数

我觉得 resamplegroupby 将是可行的方法,但我不知道如何创建仅包含这些计数的新数据集并包含 条件Overflow列开始计数

首次使用:

df['Overflow'] = df['Noxious Tank Level.MIN'] > 89

然后对于计数 Trues 使用 sum nad 对于计数值使用 size 每个天/日期:

df1 = df.resample('d')['Overflow'].agg(['sum','size'])

或者:

df1 = df.groupby(pd.Grouper(freq='D'))['Overflow'].agg(['sum','size'])

或者:

df2 = df.groupby(df.index.date)['Overflow'].agg(['sum','size'])