Python 库中是否有在没有循环的情况下删除具有两个条件的行?



我有一个问题无法解决,

我有一个大于150000的数据帧,当ID为几个键时,我想删除行,如果ID有其他键,它会删除带有键"X"的行,如果ID只有键X,它会留下行,你知道python中的库可以做到这一点,而不必经历if或循环条件,谢谢

编辑:

如果id只有保留它的密钥X,如果id有多个值,则只删除将X作为该id的密钥的行

示例:

输入

我需要什么:

输出

你注意到"2B X"已被删除

首先查找具有多个唯一密钥的ID:

import pandas as pd
df = pd.DataFrame({'ID':['A', 'A', 'B', 'B', 'B'],
'Key':['X', 'X', 'X', 'Y', 'Z']})
g = df.groupby('ID')['Key'].nunique()
multiple_keys = list(g[g > 1].index)
print(multiple_keys)

输出:

['B']

现在使用它来过滤您的DataFrame:

result = df[~((df['ID'].isin(multiple_keys)) & (df['Key'] == 'X'))]
print(result)

输出:

ID Key
0  A   X
1  A   X
3  B   Y
4  B   Z

最新更新