简体   繁体   中英

Group and Compare multiple dataframe columns with conditions in Python

I'm tryng to print out the states with highest population in each region.

Code Sample :

# all unique regions
region_unique = data['Region'].unique()

# highest population
max_pop = data['population'].max()

How can I chain the above lines of code and bring in the 'States' column to achieve my result?

Dataset :

在此处输入图像描述

Considering you haven't mentioned any library...

You could first create a helper dict , mapping each region to an array of states. Each state is a tuple: (state, pop) (name and population count):

regions = {}
for state, pop, region in zip(data['States'], data['population'], data['Region']):
    res.setdefault(region, []).append((state, pop))

Then for each region you can pull out the most inhabited state:

for region, states in regions.items():
    print(region, max(states, key=lambda _, pop: pop))

To states under each region with a population less than 100 , you can do:

for region, states in regions.items():
    print(region, list(filter(lambda state: state[1] > 100, states)))

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM