我有以下示例数据,我想过滤一条数据,当 (col1 = 'A' 和 col2 = '0') 我们希望将行保留到下一个 (col1 = 'A') .
我想使用 Pandas 数据框,但我不知道它是怎么回事。
df = pd.DataFrame({'col1': ['A', 'B', 'C'], 'col2': [0, 1]})
例如,我们有这样的数据
col1 col2
A 0
C
A 1
B
C
A 1
B
B
C
A 0
B
C
A 1
B
C
C
我想要达到的结果是:
col1 col2
A 0
C
A 0
B
C
非常感谢
最佳答案
我们先 groupby
以 'A'
开头的行块然后传播 col2
的第一个值到组的所有行。从这个结果中,我们取所有带有 0
的行在 col2
.
df[df.groupby(df.col1.eq('A').cumsum()).col2.transform('first').eq(0)]
样本数据:
df = pd.DataFrame({'col1': list('ACABCABBCABCABCC'),
'col2': [0, None, 1, None, None, 1, None, None, None, 0, None, None, 1, None, None, None]}
).astype({'col2': 'Int32'})
结果:
col1 col2
0 A 0
1 C <NA>
9 A 0
10 B <NA>
11 C <NA>
关于python - 一种基于pandas条件过滤部分数据的解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62113855/