给定一个特定的 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/