#python #pandas #pandas-groupby
#python #pandas #pandas-groupby
Вопрос:
Я пытаюсь получить строку с ближайшим значением к 5 на основе другого столбца groupby.
Предположим, что столбец groupby называется ‘ticker’, столбец ‘apply’ называется ‘YTC’. Существует несколько идентичных значений ticker.
Аналогичное решение показано ниже для макс. Однако я хочу найти ближайшее число к 5, а не максимальное.
df1.groupby("Ticker")["YTC"].max())
В идеале код должен выводить фрейм данных для значения ‘Ticker’, ближайшего к 5.
Комментарии:
1. Создайте новый столбец, из которого вычитается 5, power (-1) и используется .max()
Ответ №1:
Можно сделать это без 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
для строки, в которой встречается ближайшее значение, что может быть полезно.
Комментарии:
1. Большое спасибо. Это было идеальное решение