lassence.net

Field notes from the AI frontier

Handle infinity values in Python

--- archive: codebook, 2020–2023 · topic: Python ---

In some cases where a float is divided by zero, you may encounter infinity values, negative or positive: np.inf or -np.inf.

# Import libraries
import pandas as pd
import numpy as np
from numpy.random import randint

# Create sample dataframe
df = (
    pd.DataFrame({'clicks': randint(1, 20, 5), 
                  'impressions': list(randint(1000, 3000, 4)) + [0]})
    .assign(ctr=lambda x: x['clicks']/x['impressions'])
)
df
clicksimpressionsctr
0728500.002456
11118960.005802
2914570.006177
3916980.005300
440inf

Replace infinity values

To replace those infinity values, you can use replace():

# Replace infinity with 0
df.replace([np.inf, -np.inf], 0)
clicksimpressionsctr
0728500.002456
11118960.005802
2914570.006177
3916980.005300
4400.000000

Drop rows

If you want to drop the rows, replace infinity values with NaN and follow with dropna():

# Replace with NaN and drop rows
df.replace([np.inf, -np.inf], np.nan).dropna()
clicksimpressionsctr
0728500.002456
11118960.005802
2914570.006177
3916980.005300