python - Pandas 按顺序删除行

标签 python pandas dataframe group-by

给定一个特定的 df:

ID Text
1  abc
1  xyz
2  xyz
2  abc
3  xyz
3  abc
3  ijk
4  xyz

我想应用条件:按 ID 分组,如果 abc 存在,则删除包含 xyz 的行。结果将是:

ID Text
1  abc
2  abc
3  abc
3  ijk
4  xyz

通常我会按 Id 对它们进行分组并应用 np.where(...)。但是,我认为这种方法不适用于这种情况,因为它基于行。
非常感谢!

最佳答案

据我所知,您可以使用 groupby + transform 对其进行矢量化:

df[~(df.Text.eq('abc').groupby(df.ID).transform('any') & df.Text.eq('xyz'))]

   ID Text
0   1  abc
3   2  abc
5   3  abc
6   3  ijk
7   4  xyz

关于python - Pandas 按顺序删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49138119/

相关文章:

python - gRPC 客户端负载均衡

python - 如何将 Django 应用程序测试与其他测试一起运行?

python - jinja2 遍历元组列表

python - 在Python中加载和显示多个文件的数据帧

python - 按多个 Pandas 数据框中的共同值选择

python - 如何将一行读入 Pandas——已被返回字符打破

python - 将 pypy3 设置为 Jupyter Notebook 的内核时出现问题

python-3.x - 在 Pandas Dataframe 中将多行合并为单行

r - 添加一列以指示某个项目在不同时间戳中的存在

python - 使用列表/字典中的值在数据框中创建新行