【发布时间】:2021-06-17 07:04:20
【问题描述】:
我有一个 pandas 数据框,它每小时更新一次最新的每小时数据。我必须根据阈值过滤掉 ID,即 PR_Rate > 50 和 CNT_12571
df_thld=df[(df['Date'] > df['Date'].max() - pd.Timedelta(hours=5))& (df.PR_Rate>50) & (df.CNT_12571 < 30)]
df_thld.loc[:,'HR_CNT'] = df_thld.groupby('ID')['Date'].nunique().to_frame('HR_CNT').reset_index()
df_thld[(df_thld['HR_CNT'] >3]
这种方法的问题在于,由于回溯期要求是 5 小时,因此,此 HR_CNT 可以计算任何违反此标准的非连续小时。 我的数据集如下: DataFrame
Date IDs CT_12571 PR_Rate
16/06/2021 10:00 A1 15 50.487
16/06/2021 11:00 A1 31 40.806
16/06/2021 12:00 A1 25 52.302
16/06/2021 13:00 A1 13 61.45
16/06/2021 14:00 A1 7 73.805
在上述 Dataframe 中,阈值未在 1100 小时时突破,但在计算小时数时,10、12 和 13 小时是违反阈值的小时数,而不是要求的 12、13、14 小时。每个 id 可能会或可能不会在一天内违反此标准。任何想法,我该如何解决这个问题?
【问题讨论】:
标签: python-3.x pandas dataframe datetime