猿问

在Python中的熊猫数据帧上从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']})

它看起来像这样:


      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

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


df.groupby('region').population.sum()

返回值:


region

I      25

II     45

III    65

Name: population, dtype: int64

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


有什么建议吗?


阿波罗的战车
浏览 196回答 2
2回答

翻阅古今

首先为地区人口添加一列:df['region_pop'] = df.groupby('region')['population'].transform(sum)然后对您的数据框进行排序并提取第一行:res = df.sort_values(['region_pop', 'population'], ascending=[False, True])\        .head(1)结果:  place  population region  region_pop2     C          30    III          65

慕丝7291255

您需要找到region最高的population。然后groupby place转到具有该区域的数据子集,并找到最低的位置population。(假设该位置在真实数据中是重复的)high_reg = df.groupby('region')['population'].sum().reset_index(name='count').sort_values('count').iloc[-1]['region']df.loc[df['region']==high_reg].groupby('place')['population'].sum().reset_index(name='count').sort_values('count').iloc[0]['place']输出:'C'
随时随地看视频慕课网APP

相关分类

Python
我要回答