当前位置: 首页 > 面试题库 >

如何基于Pandas数据框中的两个或多个子集条件删除重复项

公西宏毅
2023-03-14
问题内容

可以说这是我的数据框

df = pd.DataFrame({ 'bio' : ['1', '1', '1', '4'],
                'center' : ['one', 'one', 'two', 'three'],
                'outcome' : ['f','t','f','f'] })

看起来像这样…

  bio center outcome
0   1    one       f
1   1    one       t
2   1    two       f
3   4  three       f

我想删除第1行,因为它具有与第0行相同的生物和中心。我想保留第2行,因为它具有相同的生物但中心与第0行不同。

像这样的事情基于drop_duplicates输入结构是行不通的,但这是我正在尝试做的事情

df.drop_duplicates(subset = 'bio' & subset = 'center' )

有什么建议 ?

编辑:更改df有点适合正确答案的示例


问题答案:

您的语法错误。这是正确的方法:

df.drop_duplicates(subset=['bio', 'center', 'outcome'])

或者在这种特定情况下,只需:

df.drop_duplicates()

两者都返回以下内容:

  bio center outcome
0   1    one       f
2   1    two       f
3   4  three       f

查看有关语法详细信息的df.drop_duplicates 文档。subset应该是列标签的序列。



 类似资料:
  • 问题内容: 假设我有两个这样的DataFrame: 我想创建一个新的DataFrame,它由在两个矩阵中具有匹配的“ S”和“ T”条目的行以及dfA的prob列和dfB的knstats列组成。结果应类似于以下内容,并且顺序相同很重要: 问题答案: 您可以合并它们,以便: 删除NA行:

  • 我试图通过比较对象中的多个字段来从数组中找到重复的对象。 我想将对象的两个字段与同一数组的其他对象进行比较。 我想露营只是名称和 lname,忽略我的对象内的第 3 个字段 如何查找和删除输出如下的重复对象

  • 问题内容: 我的df有3栏 我想删除df.col_1为1.0且df.col_2为0.0的行。因此,我会得到: 我试过了: 它给了我错误: 任何想法如何解决上述问题? 问题答案: drop是一种方法,您使用调用它,因此它为您提供了: 更改为(正常方法调用),它应该可以工作: 输出量

  • 让我们假设我的数据frame如下所示: 我有一个的列表,我想从Dataframe中删除它们。该列表超过200个长度,因此多个筛选器太麻烦了。 是否可以通过传递的列表来进行筛选?

  • 问题内容: 我有2个数据框,一个命名为USERS,另一个命名为EXCLUDE。他们两个都有一个名为“电子邮件”的字段。 基本上,我要删除EXERSUDE中包含电子邮件的USERS中的每一行。 我该怎么做? 问题答案: 您可以将和条件一起使用,通过以下方式反转布尔值: 另一个解决方案:

  • 问题内容: 我使用以下方式列出了重复项: 现在,如何删除除一条消息以外的所有消息(我正在尝试删除重复项,以便可以在上应用唯一索引)。 问题答案: 使用和分配行号,以便删除重复对中除一个以外的所有行。