pandas.DataFrame.filter#
- DataFrame.filter(items=None, like=None, regex=None, axis=None)[source]#
Subset the DataFrame or Series according to the specified index labels.
For DataFrame, filter rows or columns depending on
axis
argument. Note that this routine does not filter based on content. The filter is applied to the labels of the index.- Parameters:
- itemslist-like
Keep labels from axis which are in items.
- likestr
Keep labels from axis for which “like in label == True”.
- regexstr (regular expression)
Keep labels from axis for which re.search(regex, label) == True.
- axis{0 or ‘index’, 1 or ‘columns’, None}, default None
The axis to filter on, expressed either as an index (int) or axis name (str). By default this is the info axis, ‘columns’ for
DataFrame
. ForSeries
this parameter is unused and defaults toNone
.
- Returns:
- Same type as caller
The filtered subset of the DataFrame or Series.
See also
DataFrame.loc
Access a group of rows and columns by label(s) or a boolean array.
Notes
The
items
,like
, andregex
parameters are enforced to be mutually exclusive.axis
defaults to the info axis that is used when indexing with[]
.Examples
>>> df = pd.DataFrame( ... np.array(([1, 2, 3], [4, 5, 6])), ... index=["mouse", "rabbit"], ... columns=["one", "two", "three"], ... ) >>> df one two three mouse 1 2 3 rabbit 4 5 6
>>> # select columns by name >>> df.filter(items=["one", "three"]) one three mouse 1 3 rabbit 4 6
>>> # select columns by regular expression >>> df.filter(regex="e$", axis=1) one three mouse 1 3 rabbit 4 6
>>> # select rows containing 'bbi' >>> df.filter(like="bbi", axis=0) one two three rabbit 4 5 6