Найти - Пользователи
Полная версия: CSV + pandas
Начало » Центр помощи » CSV + pandas
1
gitcdr
Доброго дня всем! (или ночи)

Есть 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
В итоге на выходе я должен получить такой CSV
 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()
Но я таким образом получу просто сгруппироваые строки. Они мне как раз и нужны. Но вот что с ними делать дальше ума не приложу. Куда вставлять эту группировку, чтобы на выходе получить CSV в соответствии с этой получаемой группировкой, но со всеми столбцами и т.д. В качестве разделителя обязательно символ “|”
Заранее спасибо за любую помощь!
noob_saibot
 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='|')
to_csv
gitcdr
Спасибо за помощь, правда питон ругается на
 df.Name.isin
Говорит нет такого Name
 AttributeError: 'DataFrame' object has no attribute 'Name'
Что под ним подразумевалось? Если я правильно понял строку, то тут идет некое объединение чего-то с чем-то а потом уже запись в csv. Я как раз бьюсь над тем, чтобы понять что с чем объединять
noob_saibot
Да, не с 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)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB