熊猫-使用一系列值过滤行

时间:2020-06-11 22:04:00

标签: python pandas

我有以下数据框df

DF_TEMP                           Date Home or Away Position  GameWeek  ... Price Goal Threat  Assists Threat  Goal Involvment Threat
Player                                                          ...                                                          
Andrew Robertson    2019-08-09         Home      DEF         1  ...   7.0    0.095392        0.076136                0.171528
Dejan Lovren        2019-08-09         Home      DEF         1  ...   5.5    0.000000        0.000000                0.000000
Joel Matip          2019-08-09         Home      DEF         1  ...   5.5    0.000000        0.000000                0.000000
Joseph Gomez        2019-08-09         Home      DEF         1  ...   5.5    0.000000        0.035294                0.035294
Nathaniel Phillips  2019-08-09         Home      DEF         1  ...   0.0    0.000000        0.000000                0.000000
...                        ...          ...      ...       ...  ...   ...         ...             ...                     ...
Michail Antonio     2020-02-24         Away      MID        27  ...   6.9    0.000000        0.448161                0.448161
Nathan Holland      2020-02-24         Away      MID        27  ...   4.4    0.000000        0.000000                0.000000
Pablo Fornals       2020-02-24         Away      MID        27  ...   6.0    0.427723        0.000000                0.427723
Robert Snodgrass    2020-02-24         Away      MID        27  ...   5.2    0.000000        0.226054                0.226054
Tomas Soucek        2020-02-24         Away      MID        27  ...   5.0    0.000000        0.000000                0.000000

如果我想基于“ GameWeek”值对其进行过滤,请像这样传递变量:

gameweek = 15

只需:

filtered_df = df[df['GameWeek']==gameweek]

我将获得'GameWeek'为15的所有行。


问题

但是,如果我传递相同的变量gameweek,那么pandas怎么给我从'GameWeek'1到15的所有行?

我所有的查询都应该像这样:[:gameweek]

2 个答案:

答案 0 :(得分:1)

使用df.le(),基本上小于等于({<=):

filtered_df = df[df['GameWeek'].le(gameweek)]

OR

您还可以使用实际的<=运算符:

filtered_df = df[df['GameWeek'] <= gameweek]

答案 1 :(得分:0)

您是说要获取GameWeek范围从1到15的值吗?一种可能的方法是在range()方法中查询.isin()

filtered_df = df[df['GameWeek'].isin(range(1,16))