找出pandas数据帧中事件的中间出现“0”和第一次出现的“1”

时间:2018-02-26 16:28:37

标签: python pandas dataframe

您好我有一个pandas数据框,其中包含事件列和其他列。我希望通过id和on group执行一个小组,我希望从所有继续0中取出2个记录我想找出一个继续5 0的模式可能更多但是它必须始终跟随1以及然后识别一组记录,即继续5 0,然后是接下来的1,然后得到中间行(这5个0的0中的0)记录,找出那些0之后的第1个并取出那一行。但对于0s替换,我应该重复5次或更多次,然后从最后5次中间排出。

简而言之: 我想要0和1的集合,条件只取1的上面你发现的继续5 0或更多,如果这个模式是多次,那么采取一个模式获得每个具有0和1的id的两个记录

例如。

 import pandas as pd
 data={'id':[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
        2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2],
  'name': ['a','b','c','d','e','f','g','h','i','j','k','l','m','n'
          ,'o','p','q','r','s','t','a1','b1','c1','d1','e1','f1','g1','h1','i1','j1','k1','l1','m1','n1'
          ,'o1','p1','q1','r1','s1','t1','aa','bb','cc','dd','ee','ff',
          'gg','hh','ii','jj','kk','ll','mm','nn'
          ,'oo','pp','qq','rr','ss','tt','aa1','bb1','cc1','dd1','ee1','ff1',
          'gg1','hh1','ii1','jj1','kk1','ll1','mm1','nn1'
          ,'oo1','pp1','qq1','rr1','ss1','tt1'],
  'value':[0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
           0,0,0,0,0,0,0,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0]}
 df=pd.DataFrame.from_dict(data)

作为输出,我希望每个id获得2个记录,一个用于0,一个用于1。并且0行应该是5个或更多连续0的中间记录。

预期输出为:

    id  name    value

 16 1   q       0
 19 1   t       1

64  2   ee1     0
67  2   hh1     1

0 个答案:

没有答案