使用熊猫过滤多个值

Dat*_*oob 6 python filtering pandas

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

 +--------+--------+-------+
 |  Col1  |  Col2  | Col3 |
 +--------+--------+-------+
 | Team 1 | High   | Pizza |
 | Team 1 | Medium | Sauce |
 | Team 1 | Low    | Crust |
 +--------+--------+-------+
Run Code Online (Sandbox Code Playgroud)

我想过滤df以便我只能从Col2.

这是我在没有运气的情况下尝试过的

 df = df.loc[df['Col2'] == 'High' | (df['Col2'] == 'Medium')]
Run Code Online (Sandbox Code Playgroud)

这是我得到的错误

 cannot compare a dtyped [bool] array with a scalar of type [bool]
Run Code Online (Sandbox Code Playgroud)

任何想法如何使这项工作以及该错误意味着什么?

Ron*_*nio 52

这也有效,更pythonic

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

filtered_df = df[df['Country Name'].isin(country_list)]
print(filtered_df )
Run Code Online (Sandbox Code Playgroud)

  • 这个解决方案更好,因为您可以使用“country_list”的动态长度 (3认同)
  • 谢谢你!这里的[文档](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.isin.html)文档了解更多详细信息。 (2认同)

Ste*_*fan 13

您缺少一对括号来获取|运算符两侧的可比较项- 其优先级高于== (参见文档)

df = df.loc[(df['Col 2'] == 'High') | (df['Col2'] == 'Medium')]
Run Code Online (Sandbox Code Playgroud)