我有一个数据帧df,如下所示:
H,Nu,City
1,15,Madrid
3,15,Madrid
3,1600,Madrid
5,17615,Madrid
2,55,Dublin
4,5706,Dublin
2,68,Dublin
1,68,Dublin
我想找到Nu列的最大值/城市。然后找到H
的相应值并添加新列df['H2'] = df['H']/max(H/city)
。到目前为止我试过了:
d = df.groupby('City').apply(lambda t: t[t.Nu==t.Nu.max()])
正确返回:
H Nu City
City
Dublin 5 4 5706 Dublin
Madrid 3 5 17615 Madrid
如何将我的最大H值(都柏林为4,马德里为5)设置为常量/城市,以便在整个DataFrame中应用此功能?预期的df将显示为:
H,Nu,City,H2
1,15,Madrid,0.2
3,15,Madrid,0.6
3,1600,Madrid,0.6
5,17615,Madrid,1.0
2,55,Dublin,0.5
4,5706,Dublin,1.0
2,68,Dublin,0.5
1,68,Dublin,0.25
答案 0 :(得分:4)
使用.idxmax
,您可以获得每个Nu
具有最高City
值的行:
>>> i = df.groupby('City')['Nu'].transform('idxmax').values
>>> df['H2'] = df['H'] / df.loc[i, 'H'].values
>>> df
H Nu City H2
0 1 15 Madrid 0.20
1 3 15 Madrid 0.60
2 3 1600 Madrid 0.60
3 5 17615 Madrid 1.00
4 2 55 Dublin 0.50
5 4 5706 Dublin 1.00
6 2 68 Dublin 0.50
7 1 68 Dublin 0.25