【问题标题】:Python pandas looking for Non Consecutive Duplicates寻找非连续重复项的 Python 熊猫
【发布时间】:2018-11-04 17:52:29
【问题描述】:

我希望在 Pandas 数据框中找到非连续字符串重复项。 注意:我使用了 Shift 但无法获得所需的输出。

ABC
啊 啊 啊 啊 bb bb bb 啊 bb 抄送 抄送 bb 抄送 抄送

期望的输出: 啊 bb bb 抄送

【问题讨论】:

  • “非连续字符串重复”是什么意思?你的预期输出应该是aa, bb, aa, bb, cc, bb, cc吗?
  • 非连续字符串重复 - 我的意思是在这里我将连续重复视为非重复,以了解翻转在列中发生的位置。
  • 那么你想要的输出中的“cc”如何? @jezrael 第一个答案应该是正确的
  • 期望的输出 aa bb bb cc cc 因为当你看到系列 aa aa aa aa - 连续所以我不认为它们是 dups 和一个 grp 但我不需要在下一个输出与 bb bb bb - 相同,但我们在这里再次看到 aa,它是重复的且不连续的。在第一次 cc cc 的情况下,我们将其视为一个,而将下一个 cc cc 视为重复项。对不起,我无法更好地解释我还在开始。我在这里的主要目标是理解翻转——列应该有唯一的或连续的元素,所以如果一个元素在唯一连续的元素之后回落,那就是翻转。谢谢
  • 您为什么将cc 视为一个:“如果是cc cc,我们第一次将其视为一个”-它应该是连续重复的,因为它是连续发生的背部。为什么你会认为cc 的第一个实例不是连续重复,但aabb 也不是?

标签: python pandas


【解决方案1】:

假设您的预期输出不正确...

df[df['ABC'].shift(-1) != df['ABC']]

    ABC
3   aa
6   bb
7   aa
8   bb
10  cc
11  bb
13  cc

【讨论】:

    【解决方案2】:

    嗯,这是我为此编写的代码。

    a = df[df['ABC'].shift(1) != df['ABC']]
    b= df.drop_dupicates('ABC')
    c = a[~a.isin(b)]
    

    输出:aa bb bb cc

    【讨论】:

      猜你喜欢
      • 2013-10-28
      • 1970-01-01
      • 2014-12-09
      • 2021-07-24
      • 2020-05-09
      • 2021-09-11
      • 1970-01-01
      • 2020-09-26
      • 1970-01-01
      相关资源
      最近更新 更多