繁体   English   中英

如果ID出现多次,Pandas会选择行

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM