我有一个表是这样的:大熊猫选择行如果ID出现几个时间
CustID Purchase Time
A Item1 01/01/2011
B Item2 01/01/2011
C Item1 01/02/2011
A Item2 03/01/2011
我想与客户ID,选择表中的行出现超过1。
我有一个表是这样的:大熊猫选择行如果ID出现几个时间
CustID Purchase Time
A Item1 01/01/2011
B Item2 01/01/2011
C Item1 01/02/2011
A Item2 03/01/2011
我想与客户ID,选择表中的行出现超过1。
这可能工作:
counts = df['CustID'].value_counts()
df[df['CustID'].isin(counts.index[counts > 1])]
结果:
CustID Purchase Time
0 A Item1 01/01/2011
3 A Item2 03/01/2011
使用filter
df.groupby('CustID').filter(lambda x: len(x) > 1)
CustID Purchase Time
0 A Item1 01/01/2011
3 A Item2 03/01/2011
谢谢!真的有帮助 –
df[df['CustID'].duplicated(keep=False)]
这会找到数据框中CustID
列中存在重复项的行。该keep=False
告诉duplicated
功能,所有重复行标记为True
(而不是仅仅在第一个或最后的):
CustID Purchase Time
0 A Item1 01/01/2011
3 A Item2 03/01/2011
编辑
在文档寻找duplicated
它看起来像你可以也可做:
df[df.duplicated('CustID', keep=False)]
虽然这似乎是比原来慢约100微秒(μs的458与545微秒基础上,例如数据帧)
这是我的方法,加上一个。为了提高效率,你可以将'sort = False'传递给'value_counts' – piRSquared
好的答案!不过,您的大括号/父母在第二行是倒退的。我会编辑自己,但希望避免破坏我手机上格式的风险:) – miradulo