pandas 如何返回DataFrame中每个洲的每个国家的人口数都小于100的行?

dgiusagp  于 2022-11-27  发布在  其他
关注(0)|答案(2)|浏览(147)
df = pd.DataFrame({
    "Continent": list("AAABBBCCD"), 
    "Country": list("FGHIJKLMN"), 
    "Population": [90, 140, 50, 80, 80, 70, 50, 125, 50]})

如前所述,我想返回所有行,其中每个大洲的所有国家都小于100。

Continent Country  Population
0         A       F          90
1         A       G         140
2         A       H          50
3         B       I          80
4         B       J          80
5         B       K          70
6         C       L          50
7         C       M         125
8         D       N          50

大陆A中的每一行都被删除,因为国家G的人口超过100。大陆C中的每一行都被删除,因为国家M。我希望返回的DataFrame如下所示:

Continent Country  Population
3         B       I          80
4         B       J          80
5         B       K          70
8         D       N          50

我尝试了df[df["Population"] <= 100],但无法确定如何调整为大陆。

c0vxltue

c0vxltue1#

这里有一种方法
第一个

kdfy810k

kdfy810k2#

下面是另一种实现方法

import pandas as pd

df = pd.DataFrame({
    "Continent": list("AAABBBCCD"), 
    "Country": list("FGHIJKLMN"), 
    "Population": [90, 140, 50, 80, 80, 70, 50, 125, 50]})

df.loc[df.groupby(['Continent'])['Population'].transform('max') <= 100]

我通常不喜欢使用lambda,因为它太慢了,但是上面的答案也是可行的。

相关问题