0
0
PandasHow-ToBeginner · 3 min read

How to Use str.slice in pandas for String Slicing

Use str.slice(start, stop, step) on a pandas Series to extract substrings by position. It works like Python slicing but applies to each string in the Series, returning a new Series with the sliced strings.
📐

Syntax

The str.slice method in pandas is used to slice each string in a Series by position. It has three main parameters:

  • start: The starting index of the slice (inclusive). Default is 0.
  • stop: The ending index of the slice (exclusive). If not provided, slices to the end.
  • step: The step size for slicing, like Python slicing. Default is 1.

The method returns a new Series with the sliced strings.

python
Series.str.slice(start=None, stop=None, step=None)
💻

Example

This example shows how to slice the first 3 characters from each string in a pandas Series using str.slice. It also shows slicing with a step to get every second character.

python
import pandas as pd

# Create a Series of strings
s = pd.Series(['apple', 'banana', 'cherry', 'date'])

# Slice first 3 characters
first_three = s.str.slice(0, 3)

# Slice characters from index 1 to 5 with step 2
step_slice = s.str.slice(1, 5, 2)

print('First 3 characters:')
print(first_three)
print('\nCharacters from index 1 to 5 with step 2:')
print(step_slice)
Output
First 3 characters: 0 app 1 ban 2 che 3 dat dtype: object Characters from index 1 to 5 with step 2: 0 pl 1 an 2 hr 3 at dtype: object
⚠️

Common Pitfalls

Common mistakes when using str.slice include:

  • Not specifying stop when needed, which slices to the end by default.
  • Using negative indices incorrectly; str.slice supports negative indices but be careful with their meaning.
  • Confusing str.slice with str.slice_replace or other string methods.
  • Applying str.slice on non-string data without converting, which can cause errors.

Always ensure the Series contains strings or convert them first.

python
import pandas as pd

s = pd.Series(['apple', 'banana', None, 123])

# Wrong: applying str.slice without converting non-string values
try:
    print(s.str.slice(0, 3))
except Exception as e:
    print(f'Error: {e}')

# Right: convert all to string first
print(s.astype(str).str.slice(0, 3))
Output
Error: Can only use .str accessor with string values! 0 app 1 ban 2 Non 3 123 dtype: object
📊

Quick Reference

ParameterDescriptionDefault
startStarting index of slice (inclusive)None
stopEnding index of slice (exclusive)None (to end)
stepStep size for slicingNone

Key Takeaways

Use pandas Series.str.slice(start, stop, step) to slice strings by position.
Remember stop index is exclusive, like Python slicing.
Convert non-string data to string before using str.slice to avoid errors.
Negative indices work but use carefully to avoid unexpected results.
If stop is None, slicing goes to the end of the string.