在 Python Pandas 中删除多列中的所有重复行

新手上路,请多包涵

pandas drop_duplicates 函数非常适合“统一化”数据框。但是,要传递的关键字参数之一是 take_last=Truetake_last=False ,而我想删除所有列子集中重复的行。这可能吗?

     A   B   C
0   foo 0   A
1   foo 1   A
2   foo 1   B
3   bar 1   A

例如,我想删除匹配列 AC 的行,因此这应该删除第 0 行和第 1 行。

原文由 Jamie Bull 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 356
2 个回答

现在使用 drop_duplicates 和 keep 参数,这在 pandas 中要容易得多。

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

原文由 Ben 发布,翻译遵循 CC BY-SA 4.0 许可协议

只想添加到 Ben 对 drop_duplicates 的回答:

keep : {‘first’, ‘last’, False}, 默认 ‘first’

  • first :删除除第一次出现以外的重复项。

  • last :删除除了最后一次出现的重复项。

  • False :删除所有重复项。

所以设置 keep 为 False 会给你想要的答案。

DataFrame.drop_duplicates(*args, **kwargs) 返回删除了重复行的 DataFrame,可选地只考虑某些列

参数: subset :列标签或标签序列,可选 仅考虑某些列来识别重复项,默认情况下使用所有列 keep :{‘first’, ‘last’, False},默认为 ‘first’ first :删除重复项,除了第一次出现。 last :删除除了最后一次出现的重复项。 False :删除所有重复项。 take_last:已弃用 inplace:布尔值,默认为 False 是否就地删除重复项或返回副本 cols:kwargs 子集的唯一参数 [已弃用] 返回:去重:DataFrame

原文由 Jake 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题