Python: получение строки с ближайшим значением 5 в группах с использованием groupby - PullRequest
1 голос
/ 04 апреля 2019

Я пытаюсь получить строку с ближайшим значением 5 на основе другого столбца groupby.

Предположим, столбец groupby называется 'ticker', а столбец 'apply' называется 'YTC'.Существует несколько идентичных значений тикера.

Аналогичное решение показано ниже для макс.Однако я хочу найти ближайшее к 5 число, а не максимальное.

df1.groupby("Ticker")["YTC"].max())

В идеале код должен выводить информационный кадр для значения 'Ticker', ближайшего к 5.

1 Ответ

1 голос
/ 04 апреля 2019

Можно сделать это без groupby, отсортировав + drop_duplicates.

import pandas as pd
import numpy as np
np.random.seed(123)
df = pd.DataFrame({'Ticker': list('aabbccddeeeeefff'),
                   'YTC': np.random.randint(1,10,16)})

df[['Ticker', 'YTC']].assign(delta=(df.YTC-5).abs()).sort_values('delta').drop_duplicates('Ticker').drop(columns='delta')
#   Ticker  YTC
#12      e    5
#15      f    5
#4       c    4
#0       a    3
#2       b    7
#6       d    2

Индекс - это исходный индекс DataFrame для строки, в которой встречается самое близкое значение, что может быть полезно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...