简体   繁体   中英

How to exclude more than one group in a groupby using python?

I have grouped the number of customers by region and year joined using groupby in Python. However I want to remove several regions from the region group.

I know in order to exclude one group from a groupby you can use the following code:

grouped = df.groupby(['Region'])
df1 = df.drop(grouped.get_group(('Southwest')).index).

Therefore I initially tried the following:

grouped = df.groupby(['Region'])
df1 = df.drop(grouped.get_group(('Southwest','Northwest')).index)

However that gave me the apparent error ('Southwest','Northwest') .

Now I am wondering if there is a way to drop several groups at once instead of me having to type out the above code repeatedly for each region I want to remove.

I expect the output of the final query to be similar to the image shown below however information regarding the Northwest and Southwest regions should be removed. 分组结果

It's not df1 = df.drop(grouped.get_group(('Southwest','Northwest')).index) . grouped.get_group takes a single name as argument. If you want to drop more than one group, you can use df1 = df.drop((grouped.get_group('Southwest').index, grouped.get_group('Northwest').index)) since drop can take a list as input.

As a side note, ('Southwest') evaluates to 'Southwest' (ie it's not a tuple). If you want to make a tuple of size 1, it's ('Southwest', )

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