【问题标题】:How to remove duplicates according to an extra condition?如何根据额外条件删除重复项?
【发布时间】:2018-03-28 21:51:44
【问题描述】:

我有以下代码可以根据给定键删除数据帧的重复项:

输入:

dff = pd.DataFrame({"A":["foo", "foo", "foo", "bar"],  "B":["A","A","B","A"], "C":[0,3,1,1]})
dff.drop_duplicates(subset=['A', 'B'], keep=False)

输出:

     A  B  C
2  foo  B  1
3  bar  A  1

但是我怎样才能按相同的键分组,但选择“C”列中数字较大的行。我的意思是,所需的输出是:

     A  B  C
2  foo  B  3
3  bar  A  1

【问题讨论】:

  • 如果您使用keep=False,无论如何都会丢失 C=3 的行。你能澄清一下吗?
  • 你想要dff.sort_values('C', ascending=False).drop_duplicates(['A', 'B'], keep='first')吗?
  • 如何从您提供的样本数据中得到foo B 3

标签: python python-3.x pandas dataframe group-by


【解决方案1】:

在删除重复项之前,您似乎需要用 group max 覆盖 C 列

dff.C=dff.groupby('A').C.transform('max')
dff.drop_duplicates(subset=['A', 'B'], keep=False)
Out[325]: 
     A  B  C
2  foo  B  3
3  bar  A  1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    • 2022-08-15
    相关资源
    最近更新 更多