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)
有什么建议吗?
首先为地区人口添加一列:
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)