Skip to main content
 首页 » 编程设计

python之如何从现有数据框的某一列的前 10 名创建新的 pandas 数据框

2025年05月04日11www_RR

我正试图从一个超过 10.000 行的数据帧中提取一个新的数据帧,该数据帧包含包含客户 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 

我希望有人能帮助我,在此先感谢!

请您参考如下方法:

你可以用isin检查value_counts

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