So I want to use isin() method with df.query(), to select rows with id in a list: id_list. Similar question was asked before, but they used typical df[df['id'].isin(id_list)] method. I'm wondering if there is a way to use df.query() instead.
df = pd.DataFrame({'a': list('aabbccddeeff'), 'b': list('aaaabbbbcccc'),                    'c': np.random.randint(5, size=12),                    'd': np.random.randint(9, size=12)})  id_list = ["a", "b", "c"]   And this yields an error
df.query('a == id_list') 
                DataFrame - isin() functionThe isin() function is used to check each element in the DataFrame is contained in values or not. The result will only be true at a location if all the labels match. If values is a Series, that's the index. If values is a dict, the keys must be the column names, which must match.
append() to Combine Two Series. You can use pandas. DataFrame(Series. append(Series,ignore_index=True)) to create a DataFrame by appending series to another series.
You can also include the list within the query string:
>>> df.query('a in ["a", "b", "c"]')   This is the same as:
>>> df.query('a in @id_list') 
                        From the docs for query
You can refer to variables in the environment by prefixing them with an '@' character like
@a + b.
In your case:
In [38]: df.query('a == @id_list') Out[38]:    a  b  c  d 0  a  a  3  4 1  a  a  4  5 2  b  a  2  3 3  b  a  1  5 4  c  b  2  4 5  c  b  1  2 
                        If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With