当前位置: 首页 > 面试题库 >

如何使用python中的pandas获取所有重复项的列表?

郑宏朗
2023-03-14
问题内容

我列出了可能存在一些出口问题的物品。我想获得重复项的列表,以便可以手动比较它们。当我尝试使用pandas重复方法时,它仅返回第一个重复。有没有办法获取所有重复项,而不仅仅是第一个?

我的数据集的一小部分看起来像这样:

ID,ENROLLMENT_DATE,TRAINER_MANAGING,TRAINER_OPERATOR,FIRST_VISIT_DATE
1536D,12-Feb-12,"06DA1B3-Lebanon NH",,15-Feb-12
F15D,18-May-12,"06405B2-Lebanon NH",,25-Jul-12
8096,8-Aug-12,"0643D38-Hanover NH","0643D38-Hanover NH",25-Jun-12
A036,1-Apr-12,"06CB8CF-Hanover NH","06CB8CF-Hanover NH",9-Aug-12
8944,19-Feb-12,"06D26AD-Hanover NH",,4-Feb-12
1004E,8-Jun-12,"06388B2-Lebanon NH",,24-Dec-11
11795,3-Jul-12,"0649597-White River VT","0649597-White River VT",30-Mar-12
30D7,11-Nov-12,"06D95A3-Hanover NH","06D95A3-Hanover NH",30-Nov-11
3AE2,21-Feb-12,"06405B2-Lebanon NH",,26-Oct-12
B0FE,17-Feb-12,"06D1B9D-Hartland VT",,16-Feb-12
127A1,11-Dec-11,"064456E-Hanover NH","064456E-Hanover NH",11-Nov-12
161FF,20-Feb-12,"0643D38-Hanover NH","0643D38-Hanover NH",3-Jul-12
A036,30-Nov-11,"063B208-Randolph VT","063B208-Randolph VT",
475B,25-Sep-12,"06D26AD-Hanover NH",,5-Nov-12
151A3,7-Mar-12,"06388B2-Lebanon NH",,16-Nov-12
CA62,3-Jan-12,,,
D31B,18-Dec-11,"06405B2-Lebanon NH",,9-Jan-12
20F5,8-Jul-12,"0669C50-Randolph VT",,3-Feb-12
8096,19-Dec-11,"0649597-White River VT","0649597-White River VT",9-Apr-12
14E48,1-Aug-12,"06D3206-Hanover NH",,
177F8,20-Aug-12,"063B208-Randolph VT","063B208-Randolph VT",5-May-12
553E,11-Oct-12,"06D95A3-Hanover NH","06D95A3-Hanover NH",8-Mar-12
12D5F,18-Jul-12,"0649597-White River VT","0649597-White River VT",2-Nov-12
C6DC,13-Apr-12,"06388B2-Lebanon NH",,
11795,27-Feb-12,"0643D38-Hanover NH","0643D38-Hanover NH",19-Jun-12
17B43,11-Aug-12,,,22-Oct-12
A036,11-Aug-12,"06D3206-Hanover NH",,19-Jun-12

我的代码当前如下所示:

df_bigdata_duplicates = df_bigdata[df_bigdata.duplicated(cols='ID')]

那里有几个重复的物品。但是,当我使用上面的代码时,我只会得到第一项。在API参考中,我看到了如何获得最后一个项目,但是我希望拥有所有这些项目,因此我可以目视检查它们,以查看为什么我得到了差异。因此,在此示例中,我想获取所有三个A036条目以及11795条目和任何其他重复的条目,而不是仅第一个。任何帮助是最感激的。


问题答案:

方法1:打印所有ID为重复ID之一的行:

>>> import pandas as pd
>>> df = pd.read_csv("dup.csv")
>>> ids = df["ID"]
>>> df[ids.isin(ids[ids.duplicated()])].sort("ID")
       ID ENROLLMENT_DATE        TRAINER_MANAGING        TRAINER_OPERATOR FIRST_VISIT_DATE
24  11795       27-Feb-12      0643D38-Hanover NH      0643D38-Hanover NH        19-Jun-12
6   11795        3-Jul-12  0649597-White River VT  0649597-White River VT        30-Mar-12
18   8096       19-Dec-11  0649597-White River VT  0649597-White River VT         9-Apr-12
2    8096        8-Aug-12      0643D38-Hanover NH      0643D38-Hanover NH        25-Jun-12
12   A036       30-Nov-11     063B208-Randolph VT     063B208-Randolph VT              NaN
3    A036        1-Apr-12      06CB8CF-Hanover NH      06CB8CF-Hanover NH         9-Aug-12
26   A036       11-Aug-12      06D3206-Hanover NH                     NaN        19-Jun-12

但我想不出一种防止重复ids很多次的好方法。我更喜欢groupbyID上的方法2 :。

>>> pd.concat(g for _, g in df.groupby("ID") if len(g) > 1)
       ID ENROLLMENT_DATE        TRAINER_MANAGING        TRAINER_OPERATOR FIRST_VISIT_DATE
6   11795        3-Jul-12  0649597-White River VT  0649597-White River VT        30-Mar-12
24  11795       27-Feb-12      0643D38-Hanover NH      0643D38-Hanover NH        19-Jun-12
2    8096        8-Aug-12      0643D38-Hanover NH      0643D38-Hanover NH        25-Jun-12
18   8096       19-Dec-11  0649597-White River VT  0649597-White River VT         9-Apr-12
3    A036        1-Apr-12      06CB8CF-Hanover NH      06CB8CF-Hanover NH         9-Aug-12
12   A036       30-Nov-11     063B208-Randolph VT     063B208-Randolph VT              NaN
26   A036       11-Aug-12      06D3206-Hanover NH                     NaN        19-Jun-12


 类似资料:
  • 我有一份可能有出口问题的项目清单。我想得到一个重复项目的列表,这样我就可以手动比较它们。当我尝试使用熊猫复制方法时,它只返回第一个副本。有没有办法得到所有的副本,而不仅仅是第一个? 我的数据集的一小部分如下所示: 我的代码目前看起来像这样: 有两个重复的项目。但是,当我使用上面的代码时,我只得到第一项。在API参考中,我看到了如何获得最后一项,但我希望获得所有这些项,以便我可以直观地检查它们,以了

  • 问题内容: 我希望能够计算Pandas DataFrame中数据的描述性统计信息,但我只关心重复的条目。例如,假设我通过以下方式创建了DataFrame: 如您所见,行0、1、3、4、6和7都是重复的(使用’key1’和’key2’。但是,如果我像这样索引此DataFrame: 我懂了 (即第一行和第二行不会显示,因为重复的方法未将它们索引为True)。 那是我的第一个问题。我的第二个问题涉及如何

  • 本文向大家介绍如何使用python获取Selenium中工作表中列的所有值?,包括了如何使用python获取Selenium中工作表中列的所有值?的使用技巧和注意事项,需要的朋友参考一下 我们可以在Selenium中的工作表中获取列的所有值。Excel是电子表格,扩展名为.xlsx。一个excel工作簿有多个工作表,每个工作表都由行和列组成。 在所有工作表中,当我们访问一个称为活动工作表的特定工作

  • 问题内容: 我一直在到处寻找它,但仍然找不到解决方案:如何从mySQL列中获取所有值并将它们存储在数组中? 例如:表名称:客户列名称:ID,名称行数:5 我想获得此表中所有5个名称的数组。我该怎么做?我正在使用PHP,而我只是想: 然后使用 PHP函数将这些值存储在数组中。 问题答案: 请注意,此答案已过时! 从PHP7开始,mysql扩展不再可用。如果要在PHP7中使用旧的mysql函数,则必须

  • 给定类型脚本枚举: 我想在一个数组中得到它的所有值,如下所示: 但当我和 我得到奇怪的数组组成的索引和值: 为什么会出现这种情况?我如何才能只获取值?

  • 函数非常适合统一数据帧。但是,要传递的关键字参数之一是或,而我希望删除列子集中所有重复的行。这有可能吗? 例如,我想删除与列和匹配的行,因此这应该删除行0和1。