Форум сайта python.su
Доброго дня всем! (или ночи)
Есть csv файл вида
Date of event | Name | Date of birth | ID 07.08.1934 | John Smith | 09.09.1965 | 345 18.12.1996 | Barbara D | 01.08.1965 | 123 12.12.2001 | Barbara D | 01.08.1965 | 123 17.10.1994 | John Snow | 20.07.1965 | 567
Date of event Name Date of birth ID 06.01.1986 John Smith 23.08.1996 345 12.12.2001 Barbara D 01.08.1965 123 17.10.1994 John Snow 20.07.1965 567
df = pd.read_csv('r.csv', delimiter='|', parse_dates=[0, 2]) df.groupby(['Date of birth])['Date of event'].max()
Отредактировано gitcdr (Авг. 30, 2017 11:48:36)
Офлайн
group = df.groupby(['Date of birth])['Date of event'].max() df[(df.Name.isin(group.index))&(df['Date of event'].isin(group.values))].to_csv(open('tmp.csv', 'w'), index=False, sep='|')
Отредактировано noob_saibot (Авг. 30, 2017 13:38:47)
Офлайн
Спасибо за помощь, правда питон ругается на
df.Name.isin
AttributeError: 'DataFrame' object has no attribute 'Name'
Отредактировано gitcdr (Авг. 30, 2017 14:18:16)
Офлайн
Да, не с name надо было сравнивать, косяк, сгрупировали же по Date of birth (Хотя ошибки не должно было быть все равно, если у вас есть колонка Name). После группировки вы получите series в котором индексом будет Date of birth, а значениями Date of event, после чего проверяете двойное условие что Date of birth и Date of event для датафрейма совпадают с теми что получили в series (Датафрейм размером с исходный но заполненный True or False) и берёте True значения из датафрейма, ну а далее в csv.
df['Date of birth'].isin(group.index)
Отредактировано noob_saibot (Авг. 30, 2017 16:01:20)
Офлайн