python - Pandas :删除除第一个新出现的值之外的行

标签 python pandas dataframe numpy

我有一个数据框

x y
a 1
b 1
c 1
d 0
e 0
f 0
g 1
h 1
i 0
j 0

我想删除带有 0 的行,除了 1 之后第一次新出现的 0,所以结果数据帧应该是

x y
a 1
b 1
c 1
d 0
g 1
h 1
i 0

是否可以在不创建组或逐行迭代的情况下完成它以使其更快,因为我有一个大数据框。

最佳答案

让我们尝试使用 cumsum 创建连续值组的 diff ,然后尝试 duplicated

out = df[~df.y.diff().ne(0).cumsum().duplicated() | df.y].copy()
Out[352]: 
   x  y
0  a  1
1  b  1
2  c  1
3  d  0
6  g  1
7  h  1
8  i  0

关于python - Pandas :删除除第一个新出现的值之外的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66681835/

相关文章:

python - 使用 PFX 证书连接到 HTTP 站点

python - 通过迭代将函数应用于数据帧的所有行 - Python

python - 如何用来自不同数据集的 "marginal"(分布直方图)覆盖 Seaborn 联合图

python - 如何在 Jupyter notebook 中显示欧洲 map ?

r - 如何在 R 中获得 df 的前 100 个唯一位置?

python - 如何(或为什么不)从子类调用 unicode.__init__

python - 如何取消在 python 中托管在 web URL 中的文件

python - 如何在保留所有行的同时连接行并使每组有一个结果值

python - 将 Pandas 数据框中一列的值向前移动一个月

Python if 语句检索 "The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all()."