【问题标题】:Find first 3 occurences and order them pandas查找前 3 个匹配项并将它们排序为 pandas
【发布时间】:2022-08-12 16:58:03
【问题描述】:

给定以下数据框,我想根据创建的列获取所有教师的前 3 次出现,并附加一列来指示外观。

我试过 groupby 但我不知道如何保留前 3 个实例。

data = pd.DataFrame(
                     {\'id\': [1, 2, 3, 4, 5, 6, 7, 8, 9,],
                     \'Section\': [\'A\', \'A\', \'A\', \'B\', \'B\', \'B\',
                                 \'C\', \'C\', \'C\'],
                     \'Teacher\': [\'Kakashi\', \'Kakashi\', \'Iruka\',
                                 \'Kakashi\', \'Kakashi\', \'Kakashi\',
                                 \'Iruka\', \'Iruka\', \'Guy\'],
                     \'created\': [datetime(2022,7,11), datetime(2022, 7, 12), datetime(2022, 7, 13), 
                                 datetime(2022, 7, 14), datetime(2022, 7, 15), datetime(2022, 7, 16), 
                                 datetime(2022, 7, 17), datetime(2022, 7, 18), datetime(2022, 7, 19), ]})

前任。输出

_id Section Teacher created               appearance_order
1.  A       Kakashi datetime(2022,7,11).  1
2.  A       Kakashi datetime(2022, 7, 12) 2
4.  A       Kakashi datetime(2022, 7, 14) 3
3.  B       Iruka   datetime(2022, 7, 13) 1
7.  C.      Iruka.  datetime(2022, 7, 17) 2 
8.  C.      Iruka.  datetime(2022, 7, 18) 3
9.  C.      Guy.    datetime(2022, 7, 19) 1

    标签: python pandas datetime


    【解决方案1】:

    利用:

    data['appearance_order'] = data.groupby('Teacher').cumcount().add(1)
    
    df = data[data['appearance_order'].lt(4)]
    print (df)
       id Section  Teacher    created  appearance_order
    0   1       A  Kakashi 2022-07-11                 1
    1   2       A  Kakashi 2022-07-12                 2
    2   3       A    Iruka 2022-07-13                 1
    3   4       B  Kakashi 2022-07-14                 3
    6   7       C    Iruka 2022-07-17                 2
    7   8       C    Iruka 2022-07-18                 3
    8   9       C      Guy 2022-07-19                 1
    
        
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-07
      • 1970-01-01
      • 2021-11-04
      • 2018-02-11
      • 2022-08-22
      相关资源
      最近更新 更多