python - 找出连续多少天在熊猫中有特定值
问题描述
我有以下熊猫数据框:
Date Value
2019-01-01 0
2019-01-02 0
2019-01-03 0
2019-01-04 0
2019-01-05 1
2019-01-06 1
2019-01-10 1
2019-01-11 0
2019-01-12 0
2019-01-13 0
2019-01-14 0
我想有一个值等于 0 的每组连续天的开始日期和结束日期,并获得如下内容:
Start Date End Date. N Days
2019-01-01 2019-01-04 4
2019-01-11 2019-01-14 4
解决方案
用 创建子组cumsum
,然后groupby
用agg
s = df.Value.ne(0).cumsum()
out = df[df.Value.eq(0)].groupby(s).Date.agg(['first','last','count'])
out
Out[295]:
first last count
Value
0 2019-01-01 2019-01-04 4
3 2019-01-11 2019-01-14 4
更新
s = (df.Value.ne(0) | df.Date.diff().dt.days.ne(1)).cumsum()
out = df[df.Value.eq(0)].groupby(s).Date.agg(['first','last','count'])
out
Out[306]:
first last count
1 2019-01-01 2019-01-04 4
4 2019-01-11 2019-01-14 4
5 2020-01-01 2020-01-01 1
输入数据
Date Value
0 2019-01-01 0
1 2019-01-02 0
2 2019-01-03 0
3 2019-01-04 0
4 2019-01-05 1
5 2019-01-06 1
6 2019-01-10 1
7 2019-01-11 0
8 2019-01-12 0
9 2019-01-13 0
10 2019-01-14 0
11 2020-01-01 0
推荐阅读
- html - 视频无法在 Mozilla firefox 上播放
- python - xgboost 不使用 dask 以并行模式训练数据
- mysql - 通过构造函数参数 0 表示的不满足的依赖关系;嵌套异常是 org.springframework.beans.factory.NoSuchBeanDefinitionException
- grep - 在文件中搜索用户名,并对文件中每个用户的实例数进行排序?
- php - 根据按下的按钮使用 jQuery 将数据发送到另一个页面
- spring - Spring boot @Configurationproperties 大 yaml 文件 - 嵌套映射
- java - 如何添加红利?
- opencv - 亮度、YUV 或 HSL 使用哪种色彩空间?
- scala - 如何使用 Map 实例创建 scala 案例类实例
- php - 多个下拉菜单显示动态选项并包含系统中的目录名称?