根据系列中的数据过滤DataFrame上的行

时间:2019-03-20 03:48:58

标签: python pandas

有一个包含以下数据的数据框df

+------+----------+-------+
| YEAR | CATEGORY | GRADE |
+------+----------+-------+
| 1999 |     A    |  3.5  |
| 1999 |     A    |  7.2  |
| 1999 |     B    |  0.2  |
| 1999 |     B    |  6.4  |
| 2000 |     A    |  1.4  |
| 2000 |     A    |  2.5  |
| 2000 |     B    |  3.3  |
| 2000 |     B    |  8.4  |
+------+----------+-------+

并且有一个包含通过分数的多索引系列s

YEAR  CATEGORY 
1999  A         5.2
      B         5.1
2000  A         3.7
      B         6.1
dtype: float64

因此,我想过滤df上的行,使GRADE大于s上的值,其结果如下所示:

+------+----------+-------+
| YEAR | CATEGORY | GRADE |
+------+----------+-------+
| 1999 |     A    |  7.2  |
| 1999 |     B    |  6.4  |
| 2000 |     B    |  8.4  |
+------+----------+-------+

如何继续获得此结果?

谢谢!

1 个答案:

答案 0 :(得分:4)

set_index并结合使用gt和boolean来过滤df

yourdf=df[df.set_index(['YEAR','CATEGORY']).GRADE.gt(s).values]
yourdf
   YEAR CATEGORY  GRADE
1  1999        A    7.2
3  1999        B    6.4
7  2000        B    8.4