我有一个熊猫数据框,其中每个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。
任何人都可以提供对熊猫有用的代码会很有帮助。预先感谢。
答案 0 :(得分:4)
这是使用join
和contains
的有趣方式
s=df.set_index('IDs').astype(str).agg(''.join,1).str.contains('1111')
s[s].index.nunique()
2
答案 1 :(得分:0)
我认为将rolling
与sum
一起使用也可以。但是,我不知道它是有效还是过度杀伤
df.drop('IDs', 1).rolling(window=4, axis=1).sum().eq(4).any(1).sum()
Out[89]: 2