Pandas slice() | Programiz D11 Phase 2 Skip to main content

Pandas slice()

In this tutorial, we will learn about the slice() method in Pandas with the help of examples.

The slice() method in Pandas is utilized with the loc[] property to select a range of rows or columns by their labels or index.

Example

import pandas as pd

# create a DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12]
})

# select rows from index 0 to index 2 (inclusive) result = df.loc[slice(0, 2)]
print(result) ''' Output A B C 0 1 5 9 1 2 6 10 2 3 7 11 '''

slice() Syntax

The syntax of the slice() method in Pandas is:

slice(start, stop, step)

slice() Arguments

The slice() method takes following arguments:

  • start (optional) - the starting index or label
  • stop (optional) - the stopping index or label. This endpoint is inclusive in Pandas
  • step (optional) - the step size for selecting every nth row/column.

slice() Return Value

The slice() method creates a slice object that is used with .loc[] to return a selected subset of a DataFrame.


Example 1: Use slice() to Select Rows

import pandas as pd

# create a DataFrame
df = pd.DataFrame({'A': [1, 2, 3, 4], 
                                  'B': [5, 6, 7, 8]})

# create a slice object for rows row_slice = slice(1, 3)
# use the slice object with .loc to select a subset of the DataFrame subset_df = df.loc[row_slice] print(subset_df)

Output

   A  B
1  2  6
2  3  7
3  4  8

Here, when we use slice(1, 3) with the .loc accessor on the df DataFrame, it will select the rows starting at index 1 and up to and including index 3.


Example 2: Use slice() With Row Labels

import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8]
}, index=['w', 'x', 'y', 'z'])

# use slice() to select rows labeled from 'x' to 'y' result = df.loc[slice('x','y'), :]
print(result)

Output

   A  B
x  2  6
y  3  7

Here, we have first created the df DataFrame with columns A and B. The df is indexed with labels w, x, y, and z.

We used the .loc[] accessor with slice('x', 'y') to select rows. The slice() method here defines the range of the index labels.

The slicing starts with label 'x' and ends with label 'y'(inclusive). The : in the row position indicates that we want to select all rows.


Example 3: Use slice() With Column Labels

import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12],
    'D': [13, 14, 15, 16]
}, index=['w', 'x', 'y', 'z'])

# use slice() to select columns from 'A' to 'C' result = df.loc[:, slice('A', 'C')]
print(result)

Output

    A   B   C
w  1   5   9
x  2   6  10
y  3   7  11
z  4   8  12

In the above example, we are using slice() within .loc[] to select a range of columns.

Here, slice('A', 'C') means we start from column A and go up to and including column C.

The : in the row position indicates that we want to select all rows.


Example 4: Using slice() With a Specific Step

import pandas as pd

df = pd.DataFrame({
    'A': [1, 2, 3, 4],
    'B': [5, 6, 7, 8],
    'C': [9, 10, 11, 12],
    'D': [13, 14, 15, 16],
    'E': [17, 18, 19, 20]
}, index=['w', 'x', 'y', 'z'])

# select every second column from 'A' to 'E' result_columns = df.loc[:, slice('A', 'E', 2)]
# select every second row starting from 'w' to 'z' result_rows = df.loc[slice('w', 'z', 2), :]
print("Selected Columns with Step:\n", result_columns) print("\nSelected Rows with Step:\n", result_rows)

Output

Selected Columns with Step:
    A   C   E
w  1   9  17
x  2  10  18
y  3  11  19
z  4  12  20

Selected Rows with Step:
    A  B   C   D   E
w  1  5   9  13  17
y  3  7  11  15  19

Here,

  • result_columns is obtained by selecting every second column from A to E, using a step of 2. This includes columns A, C, and E.
  • result_rows is obtained by selecting every second row from the start of the DataFrame to the end (w to z), also with a step of 2. This includes rows w and y.