【问题标题】:'subset' not working for drop_duplicates pandas dataframe“子集”不适用于 drop_duplicates pandas 数据框
【发布时间】:2017-04-01 21:54:02
【问题描述】:

我有一个看起来像这样的 df:

    A                B    C               D     NEW
0   1       Adhoc_Task  WID          WI_DTL      []  
1   1  Arun_adhoc_load  ATT           IXN_1  (IXN,)
2   1  Arun_adhoc_load  ATT          IXN_10  (IXN,)
3   1  Arun_adhoc_load  ATT         IXN_100  (IXN,)
4   1  Arun_adhoc_load  ATT         IXN_101  (IXN,)
5   2    Batch_Support  ATT      CDS_STATUS      []
6   2    Batch_Support  ATT     CDS_CONTROL      []
7   2    Batch_Support  ATT  CDS_ORA_STATUS      []
8   2    Batch_Support  ATT      REP_FILTER      []
9   1      online_load  ATT           TAX_3  (TAX,)
10  1      online_load  ATT           TAX_4  (TAX,)
11  1      online_load  ATT           TAX_8  (TAX,)
12  1      online_load  ATT          TAX_11  (TAX,)

所需的输出如下所示:

    A                B    C               D     NEW
0   1       Adhoc_Task  WID          WI_DTL      []  
1   1  Arun_adhoc_load  ATT           IXN_1  (IXN,)
5   2    Batch_Support  ATT      CDS_STATUS      []
9   1      online_load  ATT           TAX_3  (TAX,)

我正在尝试根据 B 列删除重复的行。但是,当我运行时

df.drop_duplicates(subset = ['B'], keep='first', inplace=True)

我收到以下错误:

TypeError: drop_duplicates() got an unexpected keyword argument 'subset'

我正在从 python 3 运行 pandas 0.19.1,所以我在这里查看了文档:http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.drop_duplicates.html

我对@9​​87654326@ 做错的事情一无所知。如何根据一列中的值从 DataFrame 中删除重复项?

【问题讨论】:

  • 对我来说效果很好。不过你可以试试df.drop_duplicates(['B'], inplace=True)df.drop_duplicates('B', inplace=True)
  • 我试过了...我收到以下错误:ValueError: keep must be either "first", "last" or False
  • 我也试过了。我得到以下信息:TypeError: drop_duplicates() got multiple values for argument 'keep'
  • 它似乎没有将子集识别为关键字,或者在位置上也无法识别参数。
  • @jezrael 你是对的。这是一个系列。谢谢!

标签: python pandas dataframe duplicates


【解决方案1】:

无论出于何种原因,在您的代码中,df 都变成了一个 Series 对象。在失败的drop_duplicates 调用之前检查type(df)。该函数没有系列的subset 参数。

【讨论】:

  • 超级,不错的答案。 +1
  • 你一定想知道为什么pandas错误代码没有提示这个...
  • Pandas 维护者可能会欢迎您的 PR,并在代码更改时提供此建议。
  • 此消息的另一个原因(不是在 OP 的情况下)是如果您忘记了括号 [],如本例所示: df.drop_duplicates(subset = 'B', keep='first', inplace =真)
猜你喜欢
  • 2017-10-06
  • 1970-01-01
  • 2018-06-15
  • 2014-12-15
  • 2020-08-18
  • 2020-05-21
  • 2020-04-02
  • 2020-01-11
  • 1970-01-01
相关资源
最近更新 更多