我正在尝试根据 groupby 的另一列获取值最接近 5 的行。
假设 groupby 列称为“ticker”,“apply”列称为“YTC”。有多个相同的股票代码值。
下面显示了一个类似的解决方案,适用于最大。我想找到最接近 5 的数字,而不是最大值。
df1.groupby("Ticker")["YTC"].max())
理想情况下,代码会输出最接近 5 的“Ticker”值的数据帧。
最佳答案
可以通过排序 + drop_duplicates
来实现,无需 groupby
。
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 的原始索引,这可能很有用。
关于 python : Getting the Row which has the closest value to 5 in groups using groupby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55520807/