首页 > 解决方案 > python:提取列值大于3的行

问题描述

有一个数据框如下:

id  year number
1   2016  3
1   2017  5
2   2016  1
2   2017  5
...

我想提取 groupby id 和 number 列的值在 2016 年和 2017 年都超过 3 的行。

例如在上面的前 4 行中,结果是:

   id  year number
    1   2016  3
    1   2017  5

谢谢!

标签: pythonpython-3.xpandas

解决方案


>>> great_in_both_years = df.groupby("id").apply(lambda x: (x["number"] >= 3).all())
>>> great_in_both_years
id
1     True
2    False
dtype: bool

>>> df.loc[lambda x: x["id"].map(great_in_both_years)]
   id  year  number
0   1  2016       3
1   1  2017       5

推荐阅读