BUG: rolling functions raise ValueError on float32 data · Issue #12373 · pandas-dev/pandas (original) (raw)
import pandas as pd
import numpy as np
pd.DataFrame(np.arange(5, dtype=np.float32)).rolling(window=3).max()
<ipython-input-25-795ba6485799> in <module>()
----> 1 pd.DataFrame(np.arange(5, dtype=np.float32)).rolling(window=3).max()
/venv/lib/python3.4/site-packages/pandas/core/window.py in max(self, **kwargs)
767 @Appender(_shared_docs['max'])
768 def max(self, **kwargs):
--> 769 return super(Rolling, self).max(**kwargs)
770
771 @Substitution(name='rolling')
/venv/lib/python3.4/site-packages/pandas/core/window.py in max(self, how, **kwargs)
541 if self.freq is not None and how is None:
542 how = 'max'
--> 543 return self._apply('roll_max', how=how, **kwargs)
544
545 _shared_docs['min'] = dedent("""
/venv/lib/python3.4/site-packages/pandas/core/window.py in _apply(self, func, window, center, check_minp, how, **kwargs)
474
475 if values.ndim > 1:
--> 476 result = np.apply_along_axis(calc, self.axis, values)
477 else:
478 result = calc(values)
/venv/lib/python3.4/site-packages/numpy/lib/shape_base.py in apply_along_axis(func1d, axis, arr, *args, **kwargs)
89 outshape = asarray(arr.shape).take(indlist)
90 i.put(indlist, ind)
---> 91 res = func1d(arr[tuple(i.tolist())], *args, **kwargs)
92 # if res is a number, then we have a smaller output array
93 if isscalar(res):
/venv/lib/python3.4/site-packages/pandas/core/window.py in calc(x)
471
472 def calc(x):
--> 473 return func(x, window, min_periods=self.min_periods)
474
475 if values.ndim > 1:
/venv/lib/python3.4/site-packages/pandas/core/window.py in func(arg, window, min_periods)
458 def func(arg, window, min_periods=None):
459 minp = check_minp(min_periods, window)
--> 460 return cfunc(arg, window, minp, **kwargs)
461
462 # calculation function
pandas/algos.pyx in pandas.algos.roll_max (pandas/algos.c:37363)()
ValueError: Buffer dtype mismatch, expected 'float64_t' but got 'float'