我有以下数据框

   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进行分组,然后根据要设置小国/大国的组中的max(area)

输出应为

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

最佳答案

一种方法是将set_index然后将groupbyaggidxmaxidxmin一起使用:

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

关于python - 基于组最大值的列的Python Dataframe设置值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58468073/

10-12 15:37