如何解决如何在 python 中使用 pandas 获取所有重复项的列表?
方法 #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
这么多次。我更喜欢方法 #2:groupby
在 ID 上。
>>> 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
解决方法
我有一份可能有出口问题的物品清单。我想获取重复项目的列表,以便手动比较它们。当我尝试使用
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",25-Jun-12
A036,1-Apr-12,"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",30-Mar-12
30D7,11-Nov-12,"06D95A3-Hanover NH",30-Nov-11
3AE2,21-Feb-12,26-Oct-12
B0FE,17-Feb-12,"06D1B9D-Hartland VT",16-Feb-12
127A1,11-Dec-11,"064456E-Hanover NH",11-Nov-12
161FF,20-Feb-12,3-Jul-12
A036,30-Nov-11,"063B208-Randolph VT",475B,25-Sep-12,5-Nov-12
151A3,7-Mar-12,16-Nov-12
CA62,3-Jan-12,D31B,18-Dec-11,9-Jan-12
20F5,8-Jul-12,"0669C50-Randolph VT",3-Feb-12
8096,19-Dec-11,9-Apr-12
14E48,1-Aug-12,"06D3206-Hanover NH",177F8,20-Aug-12,5-May-12
553E,11-Oct-12,8-Mar-12
12D5F,18-Jul-12,2-Nov-12
C6DC,13-Apr-12,11795,27-Feb-12,19-Jun-12
17B43,11-Aug-12,22-Oct-12
A036,19-Jun-12
我的代码目前看起来像这样:
df_bigdata_duplicates = df_bigdata[df_bigdata.duplicated(cols='ID')]
有几个重复的项目。但是,当我使用上面的代码时,我只得到第一项。在 API
参考中,我看到了如何获得最后一项,但我想拥有所有这些,这样我就可以直观地检查它们以了解为什么会出现差异。所以,在这个例子中,我想获取所有三个 A036
条目和 11795 条目以及任何其他重复的条目,而不是第一个。非常感谢任何帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。