Python:使用groupby获取分组中最接近5的行

时间:2019-04-04 16:22:42

标签: python pandas pandas-groupby

我正在尝试根据groupby的另一列获取值最接近5的行。

假设groupby列称为“ ticker”,“ apply”列称为“ YTC”。报价器有多个相同的值。

类似的解决方案如下所示。我想找到最接近5的数字,而不是最大值。

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

理想情况下,代码将输出最接近5的'Ticker'值的数据帧。

1 个答案:

答案 0 :(得分: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的原始索引,这很有用。