Фильтрация строк в DataFrame на основе данных в серии - PullRequest
0 голосов
/ 20 марта 2019

Есть DataFrame 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 Ответ

4 голосов
/ 20 марта 2019

set_index и использование gt с логическим значением для фильтрации 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...