我有一个包含以下列的数据框:
REF_ID REPORT_DATE_RAW
12345 2019-02-21 20:53:00
我想看看每个特定的REF_ID
,以及它是否在REPORT_DATE_RAW
之后的180天内被报告过不止一次如果在随后的180天内没有出现,则视为假阳性。如果是,我想返回1,如果否,则返回0
我将需要对每个参考ID执行此操作。我尝试使用groupby和滚动求和来执行此操作,并参考了此处的另一个类似问题。以下是我目前的情况:
df['REPORT_DATE_RAW'] = pd.to_datetime(df['REPORT_DATE_RAW'])
delta=180
df = df.set_index('REPORT_DATE_RAW').assign(count=1).groupby('REF_ID').rolling(f'{delta}D').sum() - 1
这将返回:
REF_ID REPORT_DATE_RAW count
8637 2019-10-25 16:39:00 0.0
8637 2019-10-31 10:38:00 1.0
我不确定我能不能用这些结果做一个分析。。。。我不知道为什么第一个事件的计数为0,而另一个事件的计数为1。这两个REF_ID在180天内,所以我只想将这个REF_ID计算为1,这样我就可以计算出有多少REF_ID被认为是误报的
提前谢谢。这个项目是非常时间敏感,所以我感谢你的帮助
使用:
其中
[::-1]
表示法采用向前rolling
方法注意:Pandas作为^{} 用于forward函数,但它似乎不适用于datetime窗口
相关问题 更多 >
编程相关推荐