我在 Python Pandas 中有 DataFrame,如下所示:
数据类型:
ID - 整数
类型 - 对象
TG_A - 整数
TG_B - 整数
<表类=“s-表”> <标题>ID 类型 TG_A TG_B 111 一个 1 0 111 B 1 0 222 B 1 0 222 一个 1 0 333 B 0 1 333 一个 0 1
我需要删除上面 DataFrame 中的重复项,以便:
- 如果 DF 中的 ID 值重复 -> 删除 TYPE = B 且 TG_A = 1 或 TYPE = A 且 TG_B = 1 的行
因此,我需要如下所示的内容:
ID | TYPE | TG_A | TG_B
----|------|------|-----
111 | A | 1 | 0
222 | A | 1 | 0
333 | B | 0 | 1
如何在 Python Pandas 中做到这一点?
最佳答案
您可以使用两个 bool 掩码和groupby.idxmax
来获取第一个不匹配的值:
m1 = df['TYPE'].eq('B') & df['TG_A'].eq(1)
m2 = df['TYPE'].eq('A') & df['TG_B'].eq(1)
out = df.loc[(~(m1|m2)).groupby(df['ID']).idxmax()]
输出:
ID TYPE TG_A TG_B
0 111 A 1 0
3 222 A 1 0
4 333 B 0 1
关于python - 如何根据 Python Pandas 中 DataFrame 中其他 2 列中的值删除一列中的重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74773052/