在下面的数据集中,我想找到 1 的出现日期,如果 1 重复至少(比如)连续 3 天,(如果 1 发生的时间少于 3 天,它只是忽略)
date strat
2006-01-01 0
2006-01-02 1
2006-01-03 1
2006-01-04 1
2006-01-05 0
2006-01-06 1
2006-01-07 0
…
2059-12-27 0
2059-12-28 1
2059-12-29 1
2059-12-30 1
2059-12-31 0
最实用的方法是什么?
这是一种方法。您从日期系列中提取年份。然后过滤掉层数总和大于等于 3 的年份。最后,按日期对值进行排序并按年份删除重复项。
df['year'] = pd.to_datetime(df['date']).dt.year
res = df.loc[df.groupby('year')['strat'].transform('sum') >= 3]\
.sort_values('date')\
.drop_duplicates(subset=['year'])
print(res)
date strat year
6 2006-12-26 1 2006
设置
修改以演示您希望应用的逻辑:
print(df)
date strat
0 2005-12-24 0
1 2005-12-25 0
2 2005-12-25 1
3 2005-12-25 0
4 2005-12-25 1
5 2005-12-26 0
6 2006-12-26 1
7 2006-12-26 1
8 2006-12-26 1
9 2006-12-27 1
10 2006-12-27 0
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句