# Handle infinity values in Python

```
# 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
```

clicks | impressions | ctr | |
---|---|---|---|

0 | 7 | 2850 | 0.002456 |

1 | 11 | 1896 | 0.005802 |

2 | 9 | 1457 | 0.006177 |

3 | 9 | 1698 | 0.005300 |

4 | 4 | 0 | inf |

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

or `-np.inf`

.

## Replace infinity values

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

:

```
# Replace infinity with 0
df.replace([np.inf, -np.inf], 0)
```

clicks | impressions | ctr | |
---|---|---|---|

0 | 7 | 2850 | 0.002456 |

1 | 11 | 1896 | 0.005802 |

2 | 9 | 1457 | 0.006177 |

3 | 9 | 1698 | 0.005300 |

4 | 4 | 0 | 0.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()
```

clicks | impressions | ctr | |
---|---|---|---|

0 | 7 | 2850 | 0.002456 |

1 | 11 | 1896 | 0.005802 |

2 | 9 | 1457 | 0.006177 |

3 | 9 | 1698 | 0.005300 |