我有一个具有以下格式的表:
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(使用前将#替换为@)