groupby和get-min,然后追加min行的值



我使用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.mapCitySeries:

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

最新更新