“subset”在去重pandas数据框中不起作用。

15

我有一个看起来像这样的数据框:

    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

我对如何在DataFrame中基于一列的值删除重复项的subset没有任何头绪,请问应该怎么做?


1
对我来说,它完美地运行。但你可以尝试 df.drop_duplicates(['B'], inplace=True)df.drop_duplicates('B', inplace=True) - jezrael
1
我尝试了一下... 我得到了以下错误:ValueError: keep must be either "first", "last" or False - unasalusvictis
1
我也尝试过这个。我得到了以下错误信息:TypeError: drop_duplicates()的参数'keep'有多个值 - unasalusvictis
2
它似乎无法将subset识别为关键字,也无法按位置识别参数。 - unasalusvictis
@jezrael 你说得对。这是一个系列。谢谢! - unasalusvictis
1个回答

42

你的代码中某些原因导致 df 变成了 Series 对象。在出现错误的 drop_duplicates 调用之前,检查一下 type(df)。对于 Series,该函数没有 subset 参数。


1
超级棒的答案。+1 - jezrael
1
你不禁想知道为什么Pandas错误代码没有建议这个... - Mark_Anderson
1
Pandas 的维护者很可能会欢迎你提出代表这个建议的代码更改 PR。 - Zeugma
另一个导致此错误消息的原因(不在OP情况下)是如果您忘记使用方括号 [],例如:df.drop_duplicates(subset = 'B', keep='first', inplace=True)。 - Stefan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接