python - Pandas 在列中查找序列或模式

标签 python pandas dataframe sequence

这是我正在处理的问题的一些示例数据:

index     Quarter    Sales_Growth
0          2001q1    0
1          2002q2    0
2          2002q3    1
3          2002q4    0
4          2003q1    0
5          2004q2    0
6          2004q3    1
7          2004q4    1

Sales_Growth 列告诉我该季度是否确实有销售增长。 0 = 无增长,1 = 增长。

首先,当连续两个季度没有销售增长时,我试图返回第一个 Quarter

根据上面的数据,这个答案将是 2001q1

然后,我想返回在前两个季度没有增长之后发生的第二个季度的连续销售增长。

这个问题的答案是2004q4

我已经搜索过,但我找不到最接近的答案,但我无法开始工作:https://stackoverflow.com/a/26539166/3225420

我是 Pandas 初学者。

最佳答案

您正在进行子序列匹配。这有点奇怪,但请耐心等待:

growth = df.Sales_Growth.astype(str).str.cat()

这给你:

'00100011'

然后:

growth.index('0011')

给你 4(显然你会添加一个常量 3 以获得与模式匹配的最后一行的索引)。

我觉得这种方法开始有点难看,但最终结果确实有用——您可以搜索任何固定模式,无需额外编码。

关于python - Pandas 在列中查找序列或模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42555031/

相关文章:

python - 根据唯一对值过滤 pandas 数据框

python - 如何根据位置而不是标签对 Pandas df 列的值进行排序?

python - 查找两列比较之间的唯一字符

python - 如何在 Python 中仅在程序退出临界区后处理 SIGTERM?

python - tkinter - ttk TreeView : see column text

python - Pandas:如何计算一列相对于另一列的百分比?

Python搜索字符串包含字符

python - Pandas ,多索引

python - 如何在考虑其他列的同时计算 .value_count() 行?

python - 在 Python 中使用 FlexMock 模拟函数?