我有一份可能有出口问题的项目清单。我想得到一个重复项目的列表,这样我就可以手动比较它们。当我尝试使用熊猫复制方法时,它只返回第一个副本。有没有办法得到所有的副本,而不仅仅是第一个?
我的数据集的一小部分如下所示:
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条目和任何其他重复条目,而不仅仅是第一个条目。非常感谢您的帮助。
df[df.duplicated(['ID'], keep=False)]
它会将所有重复的行返回给您。
根据留档:
保留:{'first','last',False},默认值为'first'
在Pandas 0.17版本中,您可以在重复函数中设置“保留=假”来获取所有重复的项目。
In [1]: import pandas as pd
In [2]: df = pd.DataFrame(['a','b','c','d','a','b'])
In [3]: df
Out[3]:
0
0 a
1 b
2 c
3 d
4 a
5 b
In [4]: df[df.duplicated(keep=False)]
Out[4]:
0
0 a
1 b
4 a
5 b
方法#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
但是我想不出一个好办法来防止重复多次id
。我更喜欢ID上的方法2:groupby
。
>>> 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
我如何获得所有列没有一个特定的? 示例:如果我有一个包含n列的dataframe、、...,如何获得没有的所有列?
问题内容: 我列出了可能存在一些出口问题的物品。我想获得重复项的列表,以便可以手动比较它们。当我尝试使用pandas重复方法时,它仅返回第一个重复。有没有办法获取所有重复项,而不仅仅是第一个? 我的数据集的一小部分看起来像这样: 我的代码当前如下所示: 那里有几个重复的物品。但是,当我使用上面的代码时,我只会得到第一项。在API参考中,我看到了如何获得最后一个项目,但是我希望拥有所有这些项目,因此
我试着运行一段代码,在pandas数据帧中遍历一列,如下所示: 每当我检测到一个值小于0的项目时,我都想加上1,000,000,并将结果放回dataframe中。 我试着这样做: 但是我得到了一个关键错误。 如何访问for循环的当前位置?
我肯定这是以前问过的,如果重复,对不起。假设我有以下数据框: 在“key”上执行groupby,我知道我们可以执行以下操作: 获取数组中所有'拆分'数据的最简单方法是什么?: 我不一定只按一个键进行分组,而是使用其他几个索引(例如“年”和“月”),这就是为什么我想使用groupby函数,但保留数组中所有分组的值。
问题内容: 如何获得系列中最常出现的物品? 考虑系列 返回值应该是 问题答案: 您可以使用并提取第一个值: 这不一定是低效率的。与往常一样,对您的数据进行测试以查看适合的数据。
如何向Pandas 实例添加单个项目? 我正在寻找以下代码: 同样,我如何向Pandas 添加一行呢?