python : Getting the Row which has the closest value to 5 in groups using groupby

标签 python pandas pandas-groupby

我正在尝试根据 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/

相关文章:

python - 即使列中不存在数据,Pandas 也会使用自定义列进行数据透视

Python多处理存储数据直到在每个进程中进一步调用

python - 如何通过对第 3 列中的值求和来将前 2 列中具有相同值的 Pandas Dataframe 行组合在一起?

python - 从数据框列中获取数据作为元组列表

python - 在间隔列表上自定义 pandas groupby

python - 由于某些事件,例如,控制台程序是否有任何方法可以改变它们的执行方式按键或代码中的某些事件?

python - 如何在numpy中以3x3矩阵的形式获取特定数字的周围数字?

python - 在另一个 csv 文件中查找一个 csv 文件的值,使用第三个 csv 文件作为映射

python - 数据框 Pandas 中有多个带逗号的值

python - pandas 数据框中列子集的每日平均值