Pandas split DataFrame by column value

I have DataFrame with column Sales.

How can I split it into 2 based on Sales value?

First DataFrame will have data with 'Sales' < s and second with 'Sales' >= s

You can use boolean indexing:

    df = pd.DataFrame({'Sales':[10,20,30,40,50], 'A':[3,4,7,6,1]})
    print (df)
       A  Sales
    0  3     10
    1  4     20
    2  7     30
    3  6     40
    4  1     50

    s = 30

    df1 = df[df['Sales'] >= s]
    print (df1)
       A  Sales
    2  7     30
    3  6     40
    4  1     50

    df2 = df[df['Sales'] < s]
    print (df2)
       A  Sales
    0  3     10
    1  4     20

It's also possible to invert mask by ~:

    mask = df['Sales'] >= s
    df1 = df[mask]
    df2 = df[~mask]
    print (df1)
       A  Sales
    2  7     30
    3  6     40
    4  1     50

    print (df2)
       A  Sales
    0  3     10
    1  4     20
    print (mask)
    0    False
    1    False
    2     True
    3     True
    4     True
    Name: Sales, dtype: bool

    print (~mask)
    0     True
    1     True
    2    False
    3    False
    4    False
    Name: Sales, dtype: bool

From: stackoverflow.com/q/33742588