#python #pandas
#python #pandas
Вопрос:
У меня есть фрейм данных, который выглядит так:
Date installed Date removed
ID Type
A AA 2008-07-15 2008-12-29
AA 2008-12-29 2009-10-15
AAB 2009-10-15 2010-08-27
AAB 2014-11-13 2015-04-28
и я хочу свернуть строки с одинаковым 'Type'
индексом и иметь минимальную дату в 'Date installed'
столбце и максимальную дату в ‘ Date removed'
столбце. Как я могу это сделать?
Желаемый результат:
Date installed Date removed
ID Type
A AA 2008-07-15 2009-10-15
AAB 2009-10-15 2015-04-28
и код:
data = {'ID':['A', 'A', 'A', 'A'], 'Type':['AA', 'AA', 'AAB', 'AAB'], 'Date installed': ['2008-07-15',
'2008-12-29', '2009-10-15', '2014-11-13'], 'Date removed': ['2008-12-29', '2009-10-15', '2010-08-27', '2015-04-28']}
df.set_index(['ID', 'Type'], inplace=True)
Ответ №1:
Используйте GroupBy.agg
по словарю для агрегирования min
и max
:
df[['Date installed','Date removed']] = df[['Date installed','Date removed']].apply(pd.to_datetime)
df = df.groupby(level=[0,1]).agg({'Date installed':'min', 'Date removed':'max'})
print (df)
Date installed Date removed
ID Type
A AA 2008-07-15 2009-10-15
AAB 2009-10-15 2015-04-28