Hai*_* Vu 9 python group-by dataframe pandas pandas-groupby
我有这样一张桌子:
CustID Purchase Time
A Item1 01/01/2011
B Item2 01/01/2011
C Item1 01/02/2011
A Item2 03/01/2011
Run Code Online (Sandbox Code Playgroud)
我想在表中选择CustID显示多于1的行.
lan*_*tar 15
这可能有效:
counts = df['CustID'].value_counts()
df[df['CustID'].isin(counts.index[counts > 1])]
Run Code Online (Sandbox Code Playgroud)
结果:
CustID Purchase Time
0 A Item1 01/01/2011
3 A Item2 03/01/2011
Run Code Online (Sandbox Code Playgroud)
bun*_*nji 12
df[df['CustID'].duplicated(keep=False)]
Run Code Online (Sandbox Code Playgroud)
这将查找数据框中列中存在重复项的CustID行.该keep=False通知duplicated功能,以纪念所有重复行的True(而不是仅仅在第一个或最后的):
CustID Purchase Time
0 A Item1 01/01/2011
3 A Item2 03/01/2011
Run Code Online (Sandbox Code Playgroud)
编辑
查看文档,duplicated看起来你也可以这样做:
df[df.duplicated('CustID', keep=False)]
Run Code Online (Sandbox Code Playgroud)
虽然这似乎比原始速度慢约100μs(458μs与基于示例数据帧的545μs相比)
使用 filter
df.groupby('CustID').filter(lambda x: len(x) > 1)
Run Code Online (Sandbox Code Playgroud)
CustID Purchase Time
0 A Item1 01/01/2011
3 A Item2 03/01/2011
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3076 次 |
| 最近记录: |