在 groupby 之后获得最低值 - Pandas

2024-03-14

我有一个具有以下格式的表:

data = {'City' : ['London', 'Paris', 'Paris','NY' 'London'], 'Distance' : [5, 1, 7, 2, 6]}
df = pd.DataFrame(data)
df

    City    Distance
0   London  5
1   Paris   1
2   Paris   7
3   NY      2
4   London  6

我想创建一个表,其中所有行都具有唯一的“城市”,并且每当有 2 个或更多行具有相同的“城市”值时,我希望它返回“距离”最小的行。 所以在这种情况下我想要一个像这样的表:

City    Distance
London  5
Paris   1
NY      2

我知道我可以使用:

df.groupby('City')

但我不知道要添加什么来返回最小的“距离”。

最好的, 罗莎


你需要DataFrameGroupBy.idxmin http://pandas.pydata.org/pandas-docs/stable/generated/pandas.core.groupby.DataFrameGroupBy.idxmin.html对于最小索引Distance每组然后选择行loc:

df1 = df.loc[df.groupby('City', sort=False)['Distance'].idxmin()]
print (df1)
     City  Distance
0  London         5
1   Paris         1
3      NY         2

Detail:

print (df.groupby('City', sort=False)['Distance'].idxmin())
City
London    0
Paris     1
NY        3
Name: Distance, dtype: int64
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 groupby 之后获得最低值 - Pandas 的相关文章

随机推荐