使用 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']")
我正在使用 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']")