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