0

Example: df = df[df.Number = 1]

I want to filter rows for a specific list of numbers. For example:

1,2,3,4,5,6,7,8,9

I tried

df3 = df[df.Number == "01"or"02"]

Can I use a list after df3 = df[df.Number == __] ?

DobbyTheElf
  • 604
  • 6
  • 21
David95
  • 35
  • 5
  • 1
    Does this answer your question? [How do I select rows from a DataFrame based on column values?](https://stackoverflow.com/questions/17071871/how-do-i-select-rows-from-a-dataframe-based-on-column-values) – DobbyTheElf Apr 27 '23 at 10:50

4 Answers4

0

Your question is not clear and looks incoherent, but I suppose you should use a for loop, e.g.:

df3 = [df[index] for index in (2, 3)]

This is equivalent to:

df3 = [df[2], df[3]]
0

Yes, you can. Filter df which is contains 1 or 2:

df[(df.Number == 1) | (df.Number == 2)] # output : 1, 2

Filter df which is not contains 1 and 2:

df[~((df.Number == 1) | (df.Number == 2))] # output : 3, 4, 5, 6, 7, 8, 9
Jordy
  • 1,802
  • 2
  • 6
  • 25
0

isin is an efficient method of filtering according to numbers in a list:

import pandas as pd
df = df = pd.DataFrame(data={"Number":[1,2,3,4,5,6,7,8,9]})
print(df[df.Number.isin([2,3])])

returns:

   Number
1       2
2       3
DobbyTheElf
  • 604
  • 6
  • 21
0

This is what the .isin() method is for.

df = pd.DataFrame(np.random.randint(0, 5, (5)), columns=['Number'])
df
   Number
0       0
1       0
2       2
3       2
4       0
df[df.Number.isin([1,2])]
   Number
2       2
3       2

If you want to exclude the selection, you just need to invert the selection:

df[~df.Number.isin([1,2])]
   Number
0       0
1       0
4       0
Téo
  • 191
  • 3