gpt4 book ai didi

python - Pandas 在groupby中找到最大值并应用函数

转载 作者:行者123 更新时间:2023-11-28 22:43:23 24 4
gpt4 key购买 nike

我有一个数据框 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

最佳答案

使用 .idxmax ,对于每个 City,您可以获得哪一行具有最高的 Nu 值:

>>> 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

关于python - Pandas 在groupby中找到最大值并应用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30834184/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com