我有一个由负数和零组成的数据帧,还有一个日期时间索引
我希望能够: (1) 确定非连续、非零值的开始和结束日期; (2) 这两个日期之间的天数; (3) 这两个日期之间的最小值
例如,如果我的数据框如下所示:
DATE VAL
2007-06-26 0.000000
2007-06-27 0.000000
2007-06-28 0.000000
2007-06-29 -0.006408
2007-07-02 0.000000
2007-07-03 0.000000
2007-07-04 -0.000003
2007-07-05 0.000000
2007-07-06 0.000000
2007-07-09 0.000000
2007-07-10 -0.018858
2007-07-11 -0.015624
2007-07-12 0.000000
2007-07-13 0.000000
2007-07-16 -0.008562
2007-07-17 -0.006587
我希望输出如下所示:
START END DAYS MIN
2007-06-29 2007-06-29 1 -0.006408
2007-07-04 2007-07-04 1 -0.000003
2007-07-10 2007-07-11 2 -0.018858
2007-07-16 2007-07-17 2 -0.008562
如果将天数排除在周末之外(即7/13到7/16算作1天),这会更好,但我意识到这通常很复杂
numpy.argmax/min
方法似乎实现了我想要的版本,但是根据文档设置axis=1
并没有返回我期望的索引值集合
编辑:应已指定,以查找不需要循环的解决方案
这一个与最初的解决方案(Allen)有一些相似的逻辑,但较少“适用”。不确定性能比较
输出:
使用^{} 在0.25+下工作的溶液:
熊猫解决方案<;0.25可以将dictionary传递到
agg
和最后设置的新列名:首先创建一个标志来查找非零记录并将其分配到相同的组中,然后创建groupby并计算所需的属性
相关问题 更多 >
编程相关推荐