【问题标题】:How to keep only the consecutive numbers that contain certain value如何只保留包含特定值的连续数字
【发布时间】:2019-05-21 22:30:14
【问题描述】:

我有一个如下所示的数据框:

数据框中有几个组,每个组包含连续两年以上。例如,在本例中,A 组包含 2000-2005 和 2010-2015。我想做的是只保留包含目标年份的连续年份。对于 A 组,这些值将是 2010-2015 年。 B 组将被删除,因为没有连续的年份组包含目标年份 2006。结果应如下所示

我这几天一直在思考这个问题,但没有任何线索。任何帮助将不胜感激,非常感谢您的指导。

真诚的

威尔逊

【问题讨论】:

标签: python pandas dataframe


【解决方案1】:

就像我们如何解决你的previous问题一样,这里只需要添加另一个由anytransform创建的条件

s1=df.g.groupby([df.g,df.Year.diff().ne(1).cumsum()]).transform('count').ne(1)
s2=df.Year.eq(df['Target Year']).groupby([df.g,df.Year.diff().ne(1).cumsum()]).transform('any')
df[s1&s2]

【讨论】:

  • 亲爱的@WeNYoBen 非常感谢您的大力帮助。所以我猜“transform('any')df[s1&s2]”应该在同一行吧?
  • @yihaoren 不是同一行,前两行是获取条件,最后一行是用来过滤的
  • 我想我明白了。 df[s1&s2] 是一个包含 s1 和 s2 的数据框,对吗?
  • @yihaoren s1 and s2 is True or False bool serise ,
猜你喜欢
  • 1970-01-01
  • 2018-03-20
  • 1970-01-01
  • 2014-06-03
  • 2022-08-21
  • 1970-01-01
  • 1970-01-01
  • 2022-01-11
  • 2022-08-12
相关资源
最近更新 更多