将文本文件中的行分组,并有条件地 select 与 python 保持一致

Group rows in text file and select conditionally which to keep with python

我有一个文件,我必须使用 Python 进行操作。
该文件包含如下条目
student_id 姓氏 DOB 性别 Class

Example of raw data

1 约翰·泰勒 2010-05-07 M ClsA
2 玛丽·奥利弗 2010-01-29 F ClsA
3 彼得·爱德华兹 2010-10-23 M ClsA
4 罗伯特·刘易斯 2010-12-02 M ClsB
5 艾米丽·克拉克 2009-12-04 F ClsB
6 杰里米·伍德 2009-08-15 M ClsB
7 威尔贝内​​特 2008-11-30 M ClsC
8 李健雅 2009-05-11 F ClsC

我必须创建一个新文件,我只在其中传递 classes 的所有数据,其中 class 最年长的学生是男性。
以上面的例子为例,我的新文件应该是这样的:

Example of final data

如何分组 class 然后有条件地写入新文件?

import pandas as pd

a = [['John Taylor', '2010-05-07', 'M', 'ClsA'],
['Mary Oliver', '2010-01-29', 'F', 'ClsA'],
['Peter Edwards', '2010-10-23', 'M', 'ClsA'],
['Robert Lewis', '2010-12-02', 'M', 'ClsB'],
['Emily Clark', '2009-12-04', 'F' ,'ClsB'],
['Jeremy Wood', '2009-08-15', 'M', 'ClsB'],
['Will Bennett', '2008-11-30', 'M', 'ClsC'],
['Tanya Lee', '2009-05-11', 'F', 'ClsC']]
df = pd.DataFrame(a, columns=['name', 'date', 'gender', 'cl'])
df['date'] = pd.to_datetime(df['date'])

aaa = []
for i in  ['ClsA', 'ClsB', 'ClsC']:
    qqq = df.loc[df['cl'] == i].sort_values(by='date', ascending=True).reset_index().values[0, 3]
    if qqq == 'M':
        aaa.append(i)

print((df.loc[df['cl'].isin(aaa)]).reset_index())

输出

   index          name        date gender    cl
0      3  Robert Lewis  2010-12-02      M  ClsB
1      4   Emily Clark  2009-12-04      F  ClsB
2      5   Jeremy Wood  2009-08-15      M  ClsB
3      6  Will Bennett  2008-11-30      M  ClsC
4      7     Tanya Lee  2009-05-11      F  ClsC

在循环中,我检查 class 中是否有年长的男人。我在其中创建了一个必要的 classes 列表。借助which我输出了这些classes.

的所有学生