diff --git a/scipy/stats/stats.py b/scipy/stats/stats.py
index 39ee3640e..4b795b978 100644
--- a/scipy/stats/stats.py
+++ b/scipy/stats/stats.py
@@ -2473,6 +2473,9 @@ def gstd(a, axis=0, ddof=1):
             raise ValueError(
                 'Infinite value encountered. The geometric standard deviation '
                 'is defined for strictly positive values only.')
+        a_nan = np.isnan(a)
+        if a_nan.any():
+            return np.exp(np.std(log(a, where=~a_nan), axis=axis, ddof=ddof))
         elif np.less_equal(a, 0).any():
             raise ValueError(
                 'Non positive value encountered. The geometric standard '
