我正在尝试从一个具有10.000行以上的数据框中删除一个新的数据框,该行中包含保存客户ID的行,这些ID在现有数据框的前3个最常见。
因此,当我现有的数据框如下所示:
Customer-ID Name Order-ID Year
0 1 John 00001 2014
1 2 Doe 00002 2014
2 3 Erik 00003 2015
3 4 Paul 00004 2015
4 5 Karin 00005 2016
5 1 John 00006 2016
6 1 John 00007 2016
7 2 Doe 00008 2016
8 3 Erik 00009 2017
9 1 John 00010 2018
10 2 Doe 00011 2018
我希望我的新数据框看起来像这样(因为客户ID 1出现4次,ID 2出现3次,ID 3出现2次,这是最常见的前3位):
Customer-ID Name Order-ID Year
0 1 John 00001 2014
1 2 Doe 00002 2014
2 3 Erik 00003 2015
3 1 John 00006 2016
4 1 John 00007 2016
5 2 Doe 00008 2016
6 3 Erik 00009 2017
7 1 John 00010 2018
8 2 Doe 00011 2018
我希望有人能帮助我,在此先感谢!
答案 0 :(得分:7)
您可以使用value_counts
来检查isin
yourdf=df[df['Customer-ID'].isin(df['Customer-ID'].value_counts().head(3).index)]
yourdf
Out[67]:
Customer-ID Name Order-ID Year
0 1 John 1 2014
1 2 Doe 2 2014
2 3 Erik 3 2015
5 1 John 6 2016
6 1 John 7 2016
7 2 Doe 8 2016
8 3 Erik 9 2017
9 1 John 10 2018
10 2 Doe 11 2018