Сгруппируйте строки в текстовом файле и выберите условно, какие оставить с python

У меня есть файл, которым я должен манипулировать с помощью Python.
Файл состоит из записей, как показано ниже
student_id Имя Фамилия Дата рождения Пол Класс

Пример необработанных данных

1 Джон Тейлор 2010-05-07 M ClsA
2 Мэри Оливер 2010-01-29 F ClsA
3 Питер Эдвардс 23.10.2010 M ClsA
4 Роберт Льюис 2010-12-02 M ClsB
5 Эмили Кларк 2009-12-04 F ClsB
6 Джереми Вуд 2009-08-15 М, КлБ
7. Уилл Беннетт, 2008-11-30 M, ClsC
8 Таня Ли 2009-05-11 F ClsC

Мне нужно создать новый файл, в который я передаю все данные только для тех классов, где самым старшим учеником в классе является мужчина.
Взяв приведенный выше пример, мой новый файл должен быть таким:

Пример окончательных данных

Как я могу сгруппировать по классу, а затем условно записать в новый файл?

У вас есть код, которым вы можете поделиться, или вы надеетесь, что кто-то напишет его для вас?

Lancelot du Lac 12.05.2022 10:24

Обновил сообщение.

inquirer 12.05.2022 16:50
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
44
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
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

В цикле я проверяю, есть ли в классе пожилой мужчина. Я создаю в нем список необходимых классов. С помощью которого я вывожу всех учеников этих классов.

спасибо за ваш ответ, но это дает мне только самого старшего ученика! Мне нужно собрать всех учеников в классы, где самый старший ученик - мужчина! Результатом должны быть следующие строки: 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

msmith1209 12.05.2022 11:26

@ msmith1209 Обновил сообщение. Теперь я понял вас и сделал, как вы просили. Если мой ответ помог, проголосуйте за ответ. Установите галочку, которая находится под верхним и нижним треугольником.

inquirer 12.05.2022 13:29

Другие вопросы по теме