Select Pandas rows based on list index
I have a dataframe df
:
20060930 10.103 NaN 10.103 7.981
20061231 15.915 NaN 15.915 12.686
20070331 3.196 NaN 3.196 2.710
20070630 7.907 NaN 7.907 6.459
Then I want to select rows with certain sequence numbers which indicated in a list, suppose here is [1,3], then left:
20061231 15.915 NaN 15.915 12.686
20070630 7.907 NaN 7.907 6.459
How or what function can do that?
ind_list = [1, 3]
df.ix[ind_list]
should do the trick! When I index with data frames I always use the .ix() method. Its so much easier and more flexible...
UPDATE
This is no longer the accepted method for indexing. The ix
method is deprecated. Use .iloc
for integer based indexing and .loc
for label based indexing. See below example:
ind_list = [1, 3]
df.iloc[ind_list]
you can also use iloc:
df.iloc[[1,3],:]
This will not work if the indexes in your dataframe do not correspond to the order of the rows due to prior computations. In that case use:
df.index.isin([1,3])
... as suggested in other responses.
Another way (although it is a longer code) but it is faster than the above codes. Check it using %timeit function:
df[df.index.isin([1,3])]
PS: You figure out the reason