Предположим, у меня есть DataFrame в Python, похожий на этот:
df = pd.DataFrame.from_dict({
'0': ['monday', 1],
'1': ['monday', 5],
'2': ['monday', 2],
'3': ['tuesday', 1],
'4': ['tuesday', 3]
}, orient='index', columns=['day', 'value'])
И я хочу извлечь последнее наблюдение / элемент для каждого из дней, как определено, например, столбцом значений, так:df = df.sort_values(['day','value'])
Как эффективно сделать это на большом DataFrame?Чрезвычайно медленным примером желаемого эффекта будет:
indices = []
for day in df['day'].unique():
indices.append(list(df[df['day'] == day].index)[-1])
df.loc[np.array(indices)]
Что дает:
day value
1 monday 5
4 tuesday 3
Мне известен этот ответ: выберите последнее наблюдение из продольных данных , но это в R.