У меня есть рамка данных pandas со столбцами (среди прочих) user_id
и start_time
. Я хочу эффективно и легко найти все строки, связанные с максимальным размером пользователя start_time
.Эффективный максимальный выбор в рамке данных панд с условием выбора
Например, если это были мои данные:
user_id start_time A B C
1 37 a b c
1 45 d e f
1 45 g h i
2 58 j k l
2 17 m n o
2 58 p q r
3 2 s t u
, то я бы ожидать, чтобы найти
user_id start_time A B C
1 45 d e f
1 45 g h i
2 58 j k l
2 58 p q r
3 2 s t u
Я придумываю решения немного как Conditional selection of data in a pandas DataFrame, но находит user_id
с последним start time
, а не выбор таблицы для каждого пользователя max start_time
.
Конечно, это легко, если я повторил DataFrame вручную, но это неэффективно.
Спасибо за любые указатели.
Для удобства будущих читателей, порождают dataframe таким образом:
columns = ['user_id', 'start_time', 'A', 'B', 'C']
LoL = [
[1, 37, 'a', 'b', 'c'],
[1, 45, 'd', 'e', 'f'],
[1, 45, 'g', 'h', 'i'],
[2, 58, 'j', 'k', 'l'],
[2, 17, 'm', 'n', 'o'],
[2, 58, 'p', 'q', 'r'],
[3, 2, 's', 't', 'u']]
pd.DataFrame = (LoL, columns=columns)
Мне интересно знать, как GroupBy() и слияния() подход будет выполнять на большой рамке против других ответов ниже. Не могли бы вы попробовать? g = df.groupby ('user_id', as_index = False) ['start_time']. max() df.merge (g) –