Select rows from a DataFrame based on multiple values in a column in pandas

时间:2016-04-04 18:23:51

标签: python pandas dataframe

This is not a repetitive question, yet similar to

Select rows from a DataFrame based on values in a column in pandas

In that answer up in the previous link it is only based on one criteria what if I have more than one criteria.

I would like to select many rows in a column not only one based on particular values. For the sake of argument consider the DataFrame from the World Bank

import pandas.io.wb as wb
import pandas as pd
import numpy as np
df2= wb.get_indicators()

The way I select a certian value is as so

df2.loc[df2['id'] == 'SP.POP.TOTL']

and

df2.loc[df2['id'] == 'NY.GNP.PCAP.CD']

How may I select both in one new dataframe or say 3 or 4? such that the rows are:

'SP.POP.TOTL'
'NY.GNP.PCAP.CD'

Thank you in advance

1 个答案:

答案 0 :(得分:5)

you may use .isin():

In [28]: df2[df2['id'].isin(['SP.POP.TOTL','NY.GNP.PCAP.CD'])]
Out[28]:
                  id                                        name  \
7478  NY.GNP.PCAP.CD  GNI per capita, Atlas method (current US$)
9568     SP.POP.TOTL                           Population, total

                            source  \
7478  World Development Indicators
9568  World Development Indicators

                                             sourceNote  \
7478  GNI per capita (formerly GNP per capita) is th...
9568  Total population is based on the de facto defi...

                                     sourceOrganization  \
7478  b'World Bank national accounts data, and OECD ...
9568  b'(1) United Nations Population Division. Worl...

                                 topics
7478  Economy & Growth ; Climate Change
9568           Health  ; Climate Change