Filtering Pandas Dataframe using OR statement

204,677

Solution 1

From the docs:

Another common operation is the use of boolean vectors to filter the data. The operators are: | for or, & for and, and ~ for not. These must be grouped by using parentheses.

http://pandas.pydata.org/pandas-docs/version/0.15.2/indexing.html#boolean-indexing

Try:

alldata_balance = alldata[(alldata[IBRD] !=0) | (alldata[IMF] !=0)]

Solution 2

You can do like below to achieve your result:

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd
import numpy as np
....
....
#use filter with plot
#or
fg=sns.factorplot('Retailer country', data=df1[(df1['Retailer country']=='United States') | (df1['Retailer country']=='France')], kind='count')

fg.set_xlabels('Retailer country')
plt.show()


#also
#and
fg=sns.factorplot('Retailer country', data=df1[(df1['Retailer country']=='United States') & (df1['Year']=='2013')], kind='count')

fg.set_xlabels('Retailer country')
plt.show()
Share:
204,677

Related videos on Youtube

Josh
Author by

Josh

Updated on February 19, 2022

Comments

  • Josh
    Josh about 2 years

    I have a pandas dataframe and I want to filter the whole df based on the value of two columns in the data frame. I want to get back all rows and columns where IBRD or IMF != 0.

    alldata_balance = alldata[(alldata[IBRD] !=0) or (alldata[IMF] !=0)]
    

    but this gives me a ValueError

    ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().

    So I know I am not using the or statement correctly, is there a way to do this?

  • Josh
    Josh about 9 years
    Thank you, that worked great. I should have read that part of the docs.
  • sacuL
    sacuL almost 6 years
    Is this an answer to the question it is posted under? If so, why are you going explaining seaborn along with it? Also, please take a look at how to format your answers
  • Tommy
    Tommy over 2 years
    6 years later I find myself here often... I'm a bit sad that the "natural python syntax" doeesnt work in this scenario, since I bet this trips people up all_the_time.