擅长:python、mysql、java
<p>您只能保留groupby中目标总和为<;=1,然后再次分组,并确保使用.ne删除1后的零</p>
<pre><code>import pandas as pd
df = pd.DataFrame({'ID': ['a1', 'a1', 'a1', 'a1', 'a1', 'a2', 'a2', 'a2', 'a2'],
'date': ['2019-11-01',
'2019-12-01',
'2020-01-01',
'2020-02-01',
'2020-03-01',
'2019-11-01',
'2019-12-01',
'2020-03-01',
'2020-04-01'],
'target': [0, 0, 1, 1, 0, 0, 1, 0, 1]})
df = df.loc[df.groupby('ID')['target'].cumsum()<=1]
df = df.loc[df.groupby('ID')['target'].shift(1).ne(1)]
</code></pre>
<p>输出</p>
<pre><code> ID date target
0 a1 2019-11-01 0
1 a1 2019-12-01 0
2 a1 2020-01-01 1
5 a2 2019-11-01 0
6 a2 2019-12-01 1
</code></pre>