基于组最大值的列的Python数据帧设置值

基于组最大值的列的Python数据帧设置值,python,pandas,dataframe,group-by,Python,Pandas,Dataframe,Group By,我有以下数据帧 id Area Country 0 11 34.45 Norway 1 12 30.25 UK 2 13 16.70 Iran 3 11 35.45 Sweden 4 13 20.22 Iraq 5 15 35.12 USA dfObj['BigCountry'] = '' dfObj['SmallCountry'] = '' 根据地区,我想把这个国家分为大小。我试图按id分组,然后根据组内的最大值(面积),

我有以下数据帧

   id   Area Country
0  11  34.45  Norway
1  12  30.25      UK
2  13  16.70    Iran
3  11  35.45  Sweden
4  13  20.22    Iraq
5  15  35.12     USA

dfObj['BigCountry'] = ''
dfObj['SmallCountry'] = ''
根据地区,我想把这个国家分为大小。我试图按id分组,然后根据组内的最大值(面积),我想设置小/大国家

输出应该是

   id  BigCountry  SmallCountry   
0  11  Sweden         Norway
1  12  UK             UK           
2  13  Iraq           Iran
5  15  USA            USA 

一种方法是使用
set_index
然后使用
groupby
agg
idxmax
idxmin

df.set_index('Country').groupby('id')['Area'].agg(['idxmax','idxmin'])\
  .rename(columns = {'idxmax':'BigCountry', 'idxmin':'SmallCountry'})
输出:

   BigCountry SmallCountry
id                        
11     Sweden       Norway
12         UK           UK
13       Iraq         Iran
15        USA          USA

一种方法是使用
set_index
然后使用
groupby
agg
idxmax
idxmin

df.set_index('Country').groupby('id')['Area'].agg(['idxmax','idxmin'])\
  .rename(columns = {'idxmax':'BigCountry', 'idxmin':'SmallCountry'})
输出:

   BigCountry SmallCountry
id                        
11     Sweden       Norway
12         UK           UK
13       Iraq         Iran
15        USA          USA

谢谢IdxMax和Idxmin完全不在我的脑海中。@印幡,你会考虑这个答案吗?ID栏发生了什么?当我打印它时,它只显示两列。这是不是意味着ID列变成了索引?我想让所有三列都保留ID、BigCountry和SmallCountryAdd
。最后重置索引()
,从索引中获取“ID”列。谢谢。IdxMax和Idxmin完全不在我的脑海中。@印幡,你会考虑这个答案吗?ID栏发生了什么?当我打印它时,它只显示两列。这是不是意味着ID列变成了索引?我想让所有三列都保留ID、BigCountry和SmallCountryAdd
。最后重置索引()
,从索引中获取“ID”列。