使用 pandas 筛选多个值

Filter Multiple Values using pandas

我正在使用 Python 和 Pandas。我有一个与此类似的 df

 +--------+--------+-------+
 |  Col1  |  Col2  | Col3 |
 +--------+--------+-------+
 | Team 1 | High   | Pizza |
 | Team 1 | Medium | Sauce |
 | Team 1 | Low    | Crust |
 +--------+--------+-------+

我想过滤 df 以便我只看到来自 Col2 的高或中。

这是我尝试过的方法,但没有成功

 df = df.loc[df['Col2'] == 'High' | (df['Col2'] == 'Medium')]

这是我遇到的错误

 cannot compare a dtyped [bool] array with a scalar of type [bool]

知道如何使这项工作正常进行以及该错误意味着什么吗?

您缺少一对括号以获取 | 运算符两侧的可比较项 - 它的优先级高于 == (see docs):

df = df.loc[(df['Col 2'] == 'High') | (df['Col2'] == 'Medium')]

这也行,更 pythonic

country_list = ['brazil','poland','russia','countrydummy','usa']

filtered_df = df[df['Country Name'].isin(country_list)]
print(filtered_df )

你也可以使用 ( for Pandas >= 0.13 ) :

filtered_df = df.query( '"Country Name" == ["brazil","poland","russia","countrydummy","usa"]' )

print(filtered_df )

我认为df.query是处理这种事情的最好方法

df = df.query(["Col2 == ['High','Medium']")