如何在不同行中有连续值的情况下返回行

时间:2019-07-30 01:13:32

标签: python pandas

我有一个熊猫数据框,其中每个ID的不同列(四分之一)出现1(以下示例)。不同的ID出现1的顺序是不同的。我需要找出有多少个ID,可以说,四列中连续出现了1个。

Example data-frame:

IDs     q1    q2    q3    q4    q5    q6    q7    q8    q9    q10    q11   q12

1111    0     0     1     1     1      1    0     0     0     0      0     0

1122    0     0     1     0     0      1    0     0     0     0      0     0

1122    0     0     0     0     0      0    0     1     1     1      1     0

结果应为2。

任何人都可以提供对熊猫有用的代码会很有帮助。预先感谢。

2 个答案:

答案 0 :(得分:4)

这是使用joincontains的有趣方式

s=df.set_index('IDs').astype(str).agg(''.join,1).str.contains('1111')
s[s].index.nunique()
2

答案 1 :(得分:0)

我认为将rollingsum一起使用也可以。但是,我不知道它是有效还是过度杀伤

df.drop('IDs', 1).rolling(window=4, axis=1).sum().eq(4).any(1).sum()

Out[89]: 2