我有一个问题无法解决,
我有一个大于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