根据另一列选择最小或最大的数字

Pick the smallest or highest number in accordance with another column

数据框中的一列有名字,每个名字至少重复10次,所以有很多名字。 在另一列中,我有数字。 我想添加两个新列,一个显示特定名称的最小数字(出现在 NUMBERS 列中),第二个显示最大数字。

这是一个与我的真实数据相似的虚拟数据,只是为了让我的问题更清楚:

IIUC,你可以试试

out = df.merge(df.groupby('Names')['NUMBERS']
               .agg(**{'Lowest Number': 'min', 'Highest Number': 'max'}).reset_index())

示例数据:

df = pd.DataFrame({'name':['a','b','a','b','b','c','a','c'],
                   'val':[1,2,3,4,5,6,7,8]})

使用 groupbytransformapply

df['min'] = df.groupby('name')[['val']].transform(lambda g: g.min())
df['max'] = df.groupby('name')[['val']].transform(lambda g: g.max())