Выберите все строки кадра данных, которые имеют минимальное значение для группы - PullRequest
2 голосов
/ 13 января 2020

У меня есть фрейм данных с датами, временем и значениями, и я хотел бы создать новый фрейм данных с датой и значением самого раннего времени для каждой даты (представьте, как цена начального запаса)

Например,

date    time   value
1/12    9:07      10
1/12    9:03      13
1/13   10:35       8
1/13   11:02      15
1/13   11:54       6

Я бы хотел:

date    value
1/12       13
1/13        8

Поскольку эти значения соответствуют раннему времени для каждой даты.

Пока я получил:

timegroup = (result.groupby('date')['time'].min()).to_dict()

Но не могу понять, куда go отсюда.

1 Ответ

1 голос
/ 13 января 2020

Использование DataFrame.sort_values + DataFrame.drop_duplicates.

df.sort_values(['date','time']).drop_duplicates(subset ='date')[['date','value']]
#   date  value
#1  1/12     13
#2  1/13      8

или

df.sort_values(['date','time']).groupby('date',as_index=False).first()[['date','value']]
#    date  value
# 0  1/12     13
# 1  1/13      8
...