diff --git a/src/agora/io/signal.py b/src/agora/io/signal.py
index 673b13047b9d864294ae36fd9eebc96b365d2004..f5976a4f4c4b64c33c9534b429b823d27cb129fa 100644
--- a/src/agora/io/signal.py
+++ b/src/agora/io/signal.py
@@ -2,6 +2,7 @@ import typing as t
 from copy import copy
 from pathlib import PosixPath
 
+import bottleneck as bn
 import h5py
 import numpy as np
 import pandas as pd
@@ -79,7 +80,7 @@ class Signal(BridgeH5):
 
     @staticmethod
     def get_retained(df, cutoff):
-        return df.loc[df.notna().sum(axis=1) > df.shape[1] * cutoff]
+        return df.loc[bn.nansum(df.notna(), axis=1) > df.shape[1] * cutoff]
 
     def retained(self, signal, cutoff=0.8):