【发布时间】:2018-10-30 19:05:57
【问题描述】:
本质:
这是Find particular pattern in a pandas dataframe 的后续问题,但现在我不是在寻找固定模式。那么如何定义模式/时间段的特定开始和结束,并据此对 pandas 数据帧进行子集化呢?
详情:
假设你有这个数据框:
ColA ColB
Dates
2017-07-07 103 92
2017-07-08 92 96
2017-07-09 107 109
2017-07-10 100 91
2017-07-11 90 107
2017-07-12 105 99
2017-07-13 90 104
2017-07-14 90 105
2017-07-15 109 104
2017-07-16 94 90
假设您要查找的模式以ColA 中的[107, 100] 开头,并在同一列中以[90, 109] 结尾(ColB 只是为了说明它是一个数据框而不是一个系列)。如何在不知道它们之间存在多少观察值的情况下对数据框进行子集化?
期望的输出:
ColA ColB
Dates
2017-07-09 107 109
2017-07-10 100 91
2017-07-11 90 107
2017-07-12 105 99
2017-07-13 90 104
2017-07-14 90 105
2017-07-15 109 104
我知道如何使用嵌套的 for 循环以基本的方式做到这一点,但我希望你们中的一些人有一个更优雅的解决方案。感谢您的任何建议!
【问题讨论】:
-
您能否再澄清一下开头和结尾?它们是 ColA 和 ColB 的范围吗?最后一次观察是 109,它落在 107 之后。
-
该模式仅限于 ColA。添加 ColB 只是为了说明它是一个数据框而不是一个系列。