【发布时间】:2021-11-10 22:45:06
【问题描述】:
我正在尝试计算日期之间的天数(累计),(由表示为 id 的列分组),但是,我想在满足条件时重置计数器。
下面我有以下数据框:
reset_day category date id tdelta
0 N low 2019-09-04 16876 NaN
1 N low 2019-09-05 16876 NaN
2 N low 2019-09-06 16876 NaN
3 N low 2019-09-07 16876 NaN
4 N low 2019-09-08 16876 NaN
... ... ... ... ... ...
5144 Y medium 2021-05-23 17612 0.0
5145 Y high 2021-05-23 23406 0.0
5146 Y high 2021-05-23 21765 0.0
5147 Y medium 2021-05-23 19480 0.0
5148 Y medium 2021-05-23 9066 0.0
在这里,我想将值输入“tdelta”列,其中的值当前为 NaN。此列计算每个 id 的“日期”列之间的天数。
但是,我正在努力尝试根据“reset_day”列重置计数。如果列值为“Y”,则该特定 id 的计数应重新开始。在这种情况下,您已经可以在 tdelta 列中看到值 0。
我之前在类似的数据帧上尝试过以下操作,方法是创建另一个表示为 test t delta 的列:
example = example.sort_values(by="date")
example['date'] = pd.to_datetime(example['date'], format='%Y/%m/%d')
example['test tdelta'] = example.groupby('id')['date'].diff() / np.timedelta64(1, 'D')
example['test tdelta'] = example['test tdelta'].fillna(0)
但是,这只是计算每个 id 日期之间的天数,并在没有我需要的重置的情况下填充缺失的值。
关于如何解决这个问题的任何想法?
【问题讨论】:
标签: python pandas dataframe numpy time-series