在Python中的熊猫数据帧上从groupby中选择索引值

Ren*_*ene 2 python dataframe python-3.x pandas pandas-groupby

我有以下数据框:

df = pd.DataFrame({'place'     : ['A', 'B', 'C', 'D', 'E', 'F'],
               'population': [10 , 20, 30, 15, 25, 35],
               'region': ['I', 'II', 'III', 'I', 'II', 'III']})
Run Code Online (Sandbox Code Playgroud)

它看起来像这样:

      place  population region
0     A          10      I
1     B          20     II
2     C          30    III
3     D          15      I
4     E          25     II
5     F          35    III
Run Code Online (Sandbox Code Playgroud)

我想从人口最多的地区中选择人口最少的地方。

df.groupby('region').population.sum()
Run Code Online (Sandbox Code Playgroud)

返回值:

region
I      25
II     45
III    65
Name: population, dtype: int64
Run Code Online (Sandbox Code Playgroud)

但是我不知道如何从这里继续(使用.groupby / .loc / .iloc)

有什么建议吗?

jpp*_*jpp 5

首先为地区人口添加一列:

df['region_pop'] = df.groupby('region')['population'].transform(sum)
Run Code Online (Sandbox Code Playgroud)

然后对数据框进行排序并提取第一行:

res = df.sort_values(['region_pop', 'population'], ascending=[False, True])\
        .head(1)
Run Code Online (Sandbox Code Playgroud)

结果:

  place  population region  region_pop
2     C          30    III          65
Run Code Online (Sandbox Code Playgroud)