[英]Pandas select rows if ID appear several time
我有这样一张桌子:
CustID Purchase Time
A Item1 01/01/2011
B Item2 01/01/2011
C Item1 01/02/2011
A Item2 03/01/2011
我想在表中选择CustID显示多于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
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μs与基于示例数据帧的545μs相比)
使用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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.