我使用groupby和minimum作为聚合函数。我需要该行的其他一些具有最小值的值。在下面的MWE中,我需要具有最小距离mindist
的行的City
值。
import pandas as pd
data = {'City' : ['London', 'Paris', 'Lyon','NY', 'Bristol'], 'Distance' : [5, 1, 7, 2, 6], 'Country':['UK','FR','FR','US','UK']}
df = pd.DataFrame(data)
print(df)
df['mindist']=df.groupby(['Country'])['Distance'].transform(min)
print(df)
City Distance Country
0 London 5 UK
1 Paris 1 FR
2 Lyon 5 FR
3 NY 2 US
4 Bristol 6 UK
我想根据聚合的mindist
附加City
值,如下所示:
City Distance Country mindist City1
0 London 5 UK 5 London
1 Paris 1 FR 1 Paris
2 Lyon 5 FR 1 Paris
3 NY 2 US 2 NY
4 Bristol 6 UK 5 London
请注意,Distance
列中可能存在重复的值。
通过Distance
使用Series.map
和City
Series
:
df['City1'] = df['mindist'].map(df.set_index('Distance')['City'])
print(df)
City Distance Country mindist City1
0 London 5 UK 5 London
1 Paris 1 FR 1 Paris
2 Lyon 7 FR 1 Paris
3 NY 2 US 2 NY
4 Bristol 6 UK 5 London