How to filter rows containing a string pattern from a Pandas dataframe

Assume we have a data frame in Python Pandas that looks like this:

    df = pd.DataFrame({'vals': [1, 2, 3, 4], 'ids': [u'aball', u'bball', u'cnut', u'fball']})

Or, in table form:

    ids    vals
    aball   1
    bball   2
    cnut    3
    fball   4

How do I filter rows which contain the key word "ball?" For example, the output should be:

    ids    vals
    aball   1
    bball   2
    fball   4
    In [3]: df[df['ids'].str.contains("ball")]
    Out[3]:
         ids  vals
    0  aball     1
    1  bball     2
    3  fball     4

From: stackoverflow.com/q/27975069