У меня есть простой dataframe, который выглядит следующим образом:раскола, GroupBy, объединить в панде, чтобы найти разницу в датах
Я хотел бы использовать groupby
группу по идентификатору, а затем найти какой-то способ в отличие от даты, а затем столбец связать их обратно в dataframe, так что я в конечном итоге с этим:
GroupBy проста,
grouped = DF.groupby('id')
и найти самую раннюю дату, является простым,
maxdates = grouped['date'].min()
Но я не уверен, как поступить. Как применить операцию вычитания даты, а затем объединить?
Существует аналогичный вопрос here.
Спасибо, что прочитали это.
Мой dataframe является:
dates=pd.to_datetime(['2015-01-01', '2015-02-01', '2015-03-01', '2015-04-01', '2015-05-01', '2015-01-01', '2015-01-02', '2015-01-03', '2015-01-04', '2015-01-05'])
DF = DataFrame({'id':[1,1,1,1,1,2,2,2,2,2], 'date':dates})
cols = ['id', 'date']
DF=DF[cols]
EDIT: Оба ниже ответы являются удивительными. Хотел бы я принять их обоих.
панды настолько удивительно. Это наследие APL FTW! –
@DTing Я не знал, что 'DF.date' и' DF ["date"] 'были синонимами. Индексирование в Pandas - дикая поездка, что с '[], .ix, .loc. .iloc' и т. д. Я думаю, я добавлю '.' в список. Также - почему эта функция возвращает 'x days'? Как мы можем избавиться от него текстом 'days'? Кажется вполне самонадеянным из Панд, чтобы там вводить текст. На самом деле, столь же насущный вопрос был бы, как операция вернула значение в днях для начала? Почему не было, скажем, лет или месяцев? Очень таинственный материал, происходящий здесь ... –
'days_since_earliest' имеет dtype' timedelta64 [ns] '. Вы можете конвертировать, используя: http://pandas.pydata.org/pandas-docs/dev/timedeltas.html#frequency-conversion. – DTing