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

log*_*ic8 3 python dataframe pandas pandas-groupby

可以说这是我的数据框

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

看起来像这样...

  bio center outcome
0   1    one       f
1   1    one       t
2   1    two       f
3   4  three       f
Run Code Online (Sandbox Code Playgroud)

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

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

df.drop_duplicates(subset = 'bio' & subset = 'center' )
Run Code Online (Sandbox Code Playgroud)

有什么建议么 ?

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

Gus*_*rra 6

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

df.drop_duplicates(subset=['bio', 'center', 'outcome'])
Run Code Online (Sandbox Code Playgroud)

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

df.drop_duplicates()
Run Code Online (Sandbox Code Playgroud)

两者都返回以下内容:

  bio center outcome
0   1    one       f
2   1    two       f
3   4  three       f
Run Code Online (Sandbox Code Playgroud)

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