我有一个像这样的数据框,
df
col1 col2
1 A
2 A
3 A
4 A
5 A
6 A
7 B
8 B
9 A
10 A
11 A
12 A
13 B
14 A
15 B
16 A
17 A
18 A
现在,如果有连续的 B 或两个 B 之间只有一行,则显示这些 B 的起始行。
所以最终输出看起来像,
col1 col2
7 B
13 B
我可以使用 for 循环通过比较行值来完成此操作,但执行时间会很长。我正在寻找任何 Pandas 快捷方式或任何其他方法来最有效地做到这一点。
最佳答案
您可以首先将非 B
值替换为缺失值,然后按限制 1
向前填充它们 - 因此最后 2 个 B
创建一个组最后获取 B
组的第一个值:
m = df['col2'].where(df['col2'].eq('B')).ffill(limit=1).eq('B')
df = df[ m.ne(m.shift()) & m]
print (df)
col1 col2
6 7 B
12 13 B
关于python - 将连续特定值的第一行保留在 pandas 数据框中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59453732/