Pandas. Как отфильтровать таблицу по условию, пока ей не присвоена переменная

Рейтинг: 0Ответов: 0Опубликовано: 12.03.2023

Подсмотрел где-то такой стиль написания кода как "Chaining" (когда не присваиваешь каждому шагу новую переменную, а пишешь как-будто сплошным рецептом). Так вот столкнулся с проблемой. Сразу оговорюсь, понятно, что можно решить много какими другими способами, но интересно именно понять такой момент.

Есть две таблицы, я с ними делаю некие манипуляции:

введите сюда описание изображения

v = (
    orders
        .astype({'order_date': 'datetime64'})
        .loc[(orders['order_date']>='2019-02-01') & (orders['order_date']<='2019-05-01'), ['cust_id', 'order_date', 'total_order_cost']]
        .merge(customers.loc[:,['id', 'first_name']], left_on='cust_id', right_on='id', how='inner')
        .groupby(['cust_id', 'first_name', 'order_date'], as_index=False).agg(max_cost=('total_order_cost', 'sum'))
    
        #.loc[orders['max_cost']==275]
        #.apply(lambda x: x.loc[:])
        #.nlargest(1, ['max_cost'])
        #.loc[:, ['first_name', 'order_date', 'max_cost']]
    )
v

И на выходе пока что имею такое:

введите сюда описание изображения

И моя задача была отобрать строки, в которых max_cost максимальное, и это я решил через nlargest. Но предположим, задача стояла бы отобрать тех у кого max_cost = 80. Пытался через .loc[orders['max_cost']==80], но orders это стартовое значение, в нем еще даже нет такого столбца. Какое имя в данный момент имеет мой датасет? Также пробовал через apply(lambda x: x['max_cost']==80), но так не сработало.

Ответы

Ответов пока нет.