gpt4 book ai didi

python - 如果多列中的任何一列在 Pandas 中有重复的行,则删除行

转载 作者:行者123 更新时间:2023-12-01 12:03:55 28 4
gpt4 key购买 nike

我想从以下 df 中删除列 AB 中的重复行:

df = pd.DataFrame({"A":[1, 1, 2, 3, 4], "B": [2, 3, 7, 5, 5], "C": [1, 2, 3, 3, 4]})
print(df)

A B C
0 1 2 1
1 1 3 2
2 2 7 3
3 3 5 3
4 4 5 4

我期望的输出是这样的:

   A  B  C
0 1 2 1
2 2 7 3
3 3 5 3

显然 df.drop_duplicates(subset=['A', 'B'], keep=False) 不会生成我想要的。

以下代码有效,但有点长。只是想知道是否还有其他更简洁的解决方案?谢谢。

df.drop_duplicates('A', inplace=True)
df.drop_duplicates('B', inplace=True)
print(df)

A B C
0 1 2 1
2 2 7 3
3 3 5 3

最佳答案

使用Series.duplicated如果只有少数测试列,则通过 & 链接并通过 ~ 反转:

df = df[~(df['A'].duplicated() | df['B'].duplicated())]

或者,如果想要测试更多列,请使用带有 np.logical_or.reduce 的列列表:

df = df[~np.logical_or.reduce([df[x].duplicated() for x in ['A', 'B']])]

DataFrame.applyDataFrame.any :

df = df[~df[['A', 'B']].apply(lambda x: x.duplicated()).any(1)]

print (df)
A B C
0 1 2 1
2 2 7 3
3 3 5 3

关于python - 如果多列中的任何一列在 Pandas 中有重复的行,则删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59641251/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com