【问题标题】:Filtering rows pairs that follow a specific pattern in column values过滤在列值中遵循特定模式的行对
【发布时间】:2021-11-24 15:54:53
【问题描述】:

我有一个 csv 文件,其中有一列 (CODE REF) 存储两种类型的值(1A 和 1X);我将它导入到 Pandas Dataframe 中。 CODE REF 可能并不总是以 1X 开头,但我可以找到以 1X 开头的第一行的索引,并相应地对我的 Dataframe 进行切片。我正在努力完成主要任务,即仅过滤遵循序列 1X1A 的行,如图所示。我从 shift 方法开始。

输入:

  CODE REF
0       1X
1       1A
2       1A
3       1X
4       1A
5       1A
6       1A
7       1X
8       1A

预期输出:

  CODE REF
0       1X
1       1A
3       1X
4       1A
7       1X
8       1A

【问题讨论】:

  • 请以文本形式提供您的数据,并提供有关问题如何概括的更多信息
  • @mozway 很难描述;我想一个更好的说法是我只想捕获 1X1A 对;没有其他列。
  • 我明白了,请检查我的答案。下次请以文本而不是图像的形式向您提供数据。

标签: python-3.x pandas dataframe


【解决方案1】:

您可以创建一个掩码来检查给定行是否为 1X,下一行是否为 1A,然后使用掩码或其移位进行切片:

m = df['CODE REF'].eq('1X')&df['CODE REF'].shift(-1).eq('1A')

df[m|m.shift()]

输出:

  CODE REF
0       1X
1       1A
3       1X
4       1A
7       1X
8       1A

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-10-10
    • 1970-01-01
    • 2021-03-04
    • 2018-03-13
    • 1970-01-01
    • 2021-08-03
    相关资源
    最近更新 更多