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

阿邦

我想删除重复的行,无论是在列中A还是B在以下内容中df

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与chain by by&和inversion by一起使用~

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.apply搭配DataFrame.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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果该列中有任何列包含某个值,则在Pandas Dataframe中删除一行

从数据帧中删除行如果任何行值是在另一个数据帧,与具有多个列dataframes

如果第5列中有一个点,则删除行

如果超过一个列重复则删除行

如果一行中有任何数据,则提取一行中特定列的数据

如果两列中的任何一个具有指定值,则过滤行

如果列中至少有一个特定值,则删除所有行

在 Pandas 中,如何选择在一列中有重复但在另一列中有不同值的行?

如果所有行的列中只有一个值,则在Pandas数据框中折叠行

如果任何列中的所有行均为空白,则删除整列+跳过第一行

搜索pandas列并返回包含任何(一个或多个)非数字字符的所有元素(行)

HTML表操作(在一个<tr>或<td>中有多个行/列)

沿着 DataFrame 中的行处理重复项并删除 Python Pandas 中除最后一个之外的所有项

如何更新一个表中的行,而另一个表中有重复项

使用 PHP 从 CSV 中删除一列中有多个相似 ID 的行

如何根据即使只有一个重复项在另一列中具有特定值来删除列的所有重复行

从一个没有重复其余行的文件中删除重复项

组中的desc列中的任何一个单词匹配时如何查找重复的行

如果在另一个数据帧中该组中有一行,如何删除该数据集中的组?

如果一个或多个单元格为空(在任何列中),则删除整行,代码删除所有数据

如何创建一个汇总重复行的列,然后仅删除 R 中的一个重复项?

如果句子中有重复的单词如何删除行

查看列中的所有重复行和布尔列,如果所有重复行都是“假”熊猫,则将“真”设置为第一个

如果同一行存在于另一个数据框中但以两个df中的所有列结尾时,如何从Pandas数据框中删除行

如果一个参与者在不同的行中有多个条目,如何可视化数据?

如果R中的任何列中有任何实例,则按行计数

删除所有非重复的行,但保留一个

从数据帧中删除行如果任何行值是在另一个数据帧

如何检查一个值是否重复,如果重复需要删除Datatable中的两行