Skip to content

Add Category Column to pandas DataFrame with cut

This post explains how to add a category column to a pandas DataFrame with cut().

cut makes it easy to categorize numerical values in buckets.

Let's look at a a DataFrame of people and categorize them into "child", "teenager", and "adult" buckets based on their age.

Simple example

Suppose you have the following DataFrame.

Here's the code to create the DataFrame.

import pandas as pd
import numpy as np

df = pd.DataFrame(
    {"first_names": ["Todd", "Juan", "Maria", "Hi", "Sal"], "age": [12, 13, 19, 20, 42]}
)

Add an age_bins column to the DataFrame that categorizes the people into these buckets: child, teenager, or adult.

df["age_bins"] = pd.cut(
    x=df["age"],
    bins=[1, 12, 19, np.inf],
    labels=["child", "teenager", "adult"],
)

Here's what the resulting DataFrame contains.

The rightmost value is inclusive in the bins argument, so the buckets are 1-12, 13-19, and 20-infinity.

dtypes

Let's inspect the dtypes of the resulting DataFrame.

df.dtypes
first_names      object
age               int64
age_bins       category
dtype: object

You can see that age_bins is a category column.

When to use cut

You can use cut when building features for model training.

You may want to train a machine learning model based on bucket labels, not actual numerical values. cut makes it really easy for you to transform a numerical value into categories.

Conclusion

cut is a convenient way to convert a numerical column into different value buckets.

You'll find it especially useful when feature engineering.