strickenblue
strickenblue

Reputation: 1

Pandas Row-Indexing without looping

I'm attempting to row index by using pandas indexing, but it seems that there isn't an appropriate way to input a list for this. This is the solution I'm trying to use without loops.

import pandas as pd


df = pd.DataFrame({'a': [1, 2, 3, 4, 9], 'b': [3, 3, 4, 5, 100]})

print(df)

interest = [3, 4]

# results = df['a'].eq(interest)
# results = df[(df['a'] == 3) & (df['a'] == 4)]

df(results)

# print(df[df['b'] == 3])  # index 0 1 2

With loops, I'm able to get my desired result.

import pandas as pd 

df = pd.DataFrame({'a': [1, 2, 3, 4, 9], 'b': [3, 3, 4, 5, 100]})
print(df)

lst = [3,4]
print('index values are : {}'.format(lst))

results = pd.DataFrame()

for itr in lst: 
  if results.empty:
    results = df[ df['a'] == itr]
  else:
    results = results.append(df[ df['a'] == itr])

print('result : \n{}'.format(results))

I've search but most documentation will index both columns 'a' and 'b' and/or only use one value at a time for indexing, rather than a list. Let me know if I wasn't clear

Upvotes: 0

Views: 167

Answers (1)

rafaelc
rafaelc

Reputation: 59264

IIUC you want .isin?

>>> df[df.a.isin([3,4])]

   a  b
2  3  4
3  4  5

Upvotes: 1

Related Questions