Repository: vaexio/vaex

Issue:
[BUG-REPORT] Can't Replace Values in Vaex 4.0.0a4
**Description**
Upgrading from previous versions (I cloned the master branch a few weeks ago and installed), I am no longer able to replace values in a dataframe. See below for an example and the traceback.

**Software information**
 - Vaex version (`import vaex; vaex.__version__)`:
 'vaex': '4.0.0a4',
 'vaex-core': '4.0.0a9',
 'vaex-viz': '0.5.0.dev1',
 'vaex-hdf5': '0.7.0a4',
 'vaex-server': '0.4.0.dev1',
 'vaex-astro': '0.8.0.dev1',
 'vaex-jupyter': '0.6.0.dev1',
 'vaex-ml': '0.11.0a4'
 - Vaex was installed via: pip / conda-forge / from source: pip install vaex=4.0.0a4
 - OS: Windows 10

**Additional information**
```
import numpy as np
import vaex

dt = vaex.from_arrays(
    col1 = np.array(['test', '', 'test2', ''], dtype=str)
)

dt['col1'] = dt.func.where(dt['col1'] == '', 'fill', dt['col1'])  # errors here
```

<details>
<summary>Traceback</summary>
```
ERROR:MainThread:vaex:error evaluating: col1 at rows 0-4
Traceback (most recent call last):
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 102, in evaluate
    result = self[expression]
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 161, in __getitem__
    raise KeyError("Unknown variables or column: %r" % (variable,))
KeyError: 'Unknown variables or column: "where(str_equals(__col1, \'\'), \'fill\', __col1)"'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 1977, in data_type
    data = self.evaluate(expression, 0, 1, filtered=False, array_type=array_type, parallel=False)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 2620, in evaluate
    return self._evaluate_implementation(expression, i1=i1, i2=i2, out=out, selection=selection, filtered=filtered, array_type=array_type, parallel=parallel, chunk_size=chunk_size)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 5528, in _evaluate_implementation
    value = scope.evaluate(expression)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 102, in evaluate
    result = self[expression]
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 153, in __getitem__
    values = self.evaluate(expression)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 108, in evaluate
    result = eval(expression, expression_namespace, self)
  File "<string>", line 1, in <module>
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 149, in wrapper
    result = f(*args, **kwargs)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\functions.py", line 165, in wrapper
    result = arg.add_missing(result)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 41, in add_missing
    ar = combine_missing(ar, self._array)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 20, in combine_missing
    return pa.Array.from_buffers(a.type, len(a), [nulls_buffer, buffers[1]])
  File "pyarrow\array.pxi", line 910, in pyarrow.lib.Array.from_buffers
ValueError: Type's expected number of buffers (3) did not match the passed number (2).

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 102, in evaluate
    result = self[expression]
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 161, in __getitem__
    raise KeyError("Unknown variables or column: %r" % (variable,))
KeyError: 'Unknown variables or column: "where(str_equals(__col1, \'\'), \'fill\', __col1)"'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 3551, in table_part
    values = dict(zip(column_names, df.evaluate(column_names)))
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 2620, in evaluate
    return self._evaluate_implementation(expression, i1=i1, i2=i2, out=out, selection=selection, filtered=filtered, array_type=array_type, parallel=parallel, chunk_size=chunk_size)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 5441, in _evaluate_implementation
    dtypes[expression] = dtype = df.data_type(expression)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 1979, in data_type
    data = self.evaluate(expression, 0, 1, filtered=True, array_type=array_type, parallel=False)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 2620, in evaluate
    return self._evaluate_implementation(expression, i1=i1, i2=i2, out=out, selection=selection, filtered=filtered, array_type=array_type, parallel=parallel, chunk_size=chunk_size)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 5528, in _evaluate_implementation
    value = scope.evaluate(expression)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 102, in evaluate
    result = self[expression]
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 153, in __getitem__
    values = self.evaluate(expression)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 108, in evaluate
    result = eval(expression, expression_namespace, self)
  File "<string>", line 1, in <module>
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 149, in wrapper
    result = f(*args, **kwargs)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\functions.py", line 165, in wrapper
    result = arg.add_missing(result)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 41, in add_missing
    ar = combine_missing(ar, self._array)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 20, in combine_missing
    return pa.Array.from_buffers(a.type, len(a), [nulls_buffer, buffers[1]])
  File "pyarrow\array.pxi", line 910, in pyarrow.lib.Array.from_buffers
ValueError: Type's expected number of buffers (3) did not match the passed number (2).

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 102, in evaluate
    result = self[expression]
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 161, in __getitem__
    raise KeyError("Unknown variables or column: %r" % (variable,))
KeyError: 'Unknown variables or column: "where(str_equals(__col1, \'\'), \'fill\', __col1)"'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 1977, in data_type
    data = self.evaluate(expression, 0, 1, filtered=False, array_type=array_type, parallel=False)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 2620, in evaluate
    return self._evaluate_implementation(expression, i1=i1, i2=i2, out=out, selection=selection, filtered=filtered, array_type=array_type, parallel=parallel, chunk_size=chunk_size)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 5528, in _evaluate_implementation
    value = scope.evaluate(expression)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 102, in evaluate
    result = self[expression]
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 153, in __getitem__
    values = self.evaluate(expression)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 108, in evaluate
    result = eval(expression, expression_namespace, self)
  File "<string>", line 1, in <module>
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 149, in wrapper
    result = f(*args, **kwargs)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\functions.py", line 165, in wrapper
    result = arg.add_missing(result)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 41, in add_missing
    ar = combine_missing(ar, self._array)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 20, in combine_missing
    return pa.Array.from_buffers(a.type, len(a), [nulls_buffer, buffers[1]])
  File "pyarrow\array.pxi", line 910, in pyarrow.lib.Array.from_buffers
ValueError: Type's expected number of buffers (3) did not match the passed number (2).

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 102, in evaluate
    result = self[expression]
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 161, in __getitem__
    raise KeyError("Unknown variables or column: %r" % (variable,))
KeyError: 'Unknown variables or column: "where(str_equals(__col1, \'\'), \'fill\', __col1)"'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 3556, in table_part
    values[name] = df.evaluate(name)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 2620, in evaluate
    return self._evaluate_implementation(expression, i1=i1, i2=i2, out=out, selection=selection, filtered=filtered, array_type=array_type, parallel=parallel, chunk_size=chunk_size)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 5441, in _evaluate_implementation
    dtypes[expression] = dtype = df.data_type(expression)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 1979, in data_type
    data = self.evaluate(expression, 0, 1, filtered=True, array_type=array_type, parallel=False)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 2620, in evaluate
    return self._evaluate_implementation(expression, i1=i1, i2=i2, out=out, selection=selection, filtered=filtered, array_type=array_type, parallel=parallel, chunk_size=chunk_size)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 5528, in _evaluate_implementation
    value = scope.evaluate(expression)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 102, in evaluate
    result = self[expression]
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 153, in __getitem__
    values = self.evaluate(expression)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 108, in evaluate
    result = eval(expression, expression_namespace, self)
  File "<string>", line 1, in <module>
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 149, in wrapper
    result = f(*args, **kwargs)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\functions.py", line 165, in wrapper
    result = arg.add_missing(result)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 41, in add_missing
    ar = combine_missing(ar, self._array)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 20, in combine_missing
    return pa.Array.from_buffers(a.type, len(a), [nulls_buffer, buffers[1]])
  File "pyarrow\array.pxi", line 910, in pyarrow.lib.Array.from_buffers
ValueError: Type's expected number of buffers (3) did not match the passed number (2).
ERROR:MainThread:vaex:error evaluating: col1 at rows 0-4
Traceback (most recent call last):
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 102, in evaluate
    result = self[expression]
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 161, in __getitem__
    raise KeyError("Unknown variables or column: %r" % (variable,))
KeyError: 'Unknown variables or column: "where(str_equals(__col1, \'\'), \'fill\', __col1)"'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 1977, in data_type
    data = self.evaluate(expression, 0, 1, filtered=False, array_type=array_type, parallel=False)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 2620, in evaluate
    return self._evaluate_implementation(expression, i1=i1, i2=i2, out=out, selection=selection, filtered=filtered, array_type=array_type, parallel=parallel, chunk_size=chunk_size)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 5528, in _evaluate_implementation
    value = scope.evaluate(expression)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 102, in evaluate
    result = self[expression]
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 153, in __getitem__
    values = self.evaluate(expression)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 108, in evaluate
    result = eval(expression, expression_namespace, self)
  File "<string>", line 1, in <module>
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 149, in wrapper
    result = f(*args, **kwargs)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\functions.py", line 165, in wrapper
    result = arg.add_missing(result)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 41, in add_missing
    ar = combine_missing(ar, self._array)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 20, in combine_missing
    return pa.Array.from_buffers(a.type, len(a), [nulls_buffer, buffers[1]])
  File "pyarrow\array.pxi", line 910, in pyarrow.lib.Array.from_buffers
ValueError: Type's expected number of buffers (3) did not match the passed number (2).

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 102, in evaluate
    result = self[expression]
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 161, in __getitem__
    raise KeyError("Unknown variables or column: %r" % (variable,))
KeyError: 'Unknown variables or column: "where(str_equals(__col1, \'\'), \'fill\', __col1)"'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 3551, in table_part
    values = dict(zip(column_names, df.evaluate(column_names)))
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 2620, in evaluate
    return self._evaluate_implementation(expression, i1=i1, i2=i2, out=out, selection=selection, filtered=filtered, array_type=array_type, parallel=parallel, chunk_size=chunk_size)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 5441, in _evaluate_implementation
    dtypes[expression] = dtype = df.data_type(expression)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 1979, in data_type
    data = self.evaluate(expression, 0, 1, filtered=True, array_type=array_type, parallel=False)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 2620, in evaluate
    return self._evaluate_implementation(expression, i1=i1, i2=i2, out=out, selection=selection, filtered=filtered, array_type=array_type, parallel=parallel, chunk_size=chunk_size)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 5528, in _evaluate_implementation
    value = scope.evaluate(expression)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 102, in evaluate
    result = self[expression]
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 153, in __getitem__
    values = self.evaluate(expression)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 108, in evaluate
    result = eval(expression, expression_namespace, self)
  File "<string>", line 1, in <module>
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 149, in wrapper
    result = f(*args, **kwargs)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\functions.py", line 165, in wrapper
    result = arg.add_missing(result)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 41, in add_missing
    ar = combine_missing(ar, self._array)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 20, in combine_missing
    return pa.Array.from_buffers(a.type, len(a), [nulls_buffer, buffers[1]])
  File "pyarrow\array.pxi", line 910, in pyarrow.lib.Array.from_buffers
ValueError: Type's expected number of buffers (3) did not match the passed number (2).

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 102, in evaluate
    result = self[expression]
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 161, in __getitem__
    raise KeyError("Unknown variables or column: %r" % (variable,))
KeyError: 'Unknown variables or column: "where(str_equals(__col1, \'\'), \'fill\', __col1)"'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 1977, in data_type
    data = self.evaluate(expression, 0, 1, filtered=False, array_type=array_type, parallel=False)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 2620, in evaluate
    return self._evaluate_implementation(expression, i1=i1, i2=i2, out=out, selection=selection, filtered=filtered, array_type=array_type, parallel=parallel, chunk_size=chunk_size)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 5528, in _evaluate_implementation
    value = scope.evaluate(expression)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 102, in evaluate
    result = self[expression]
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 153, in __getitem__
    values = self.evaluate(expression)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 108, in evaluate
    result = eval(expression, expression_namespace, self)
  File "<string>", line 1, in <module>
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 149, in wrapper
    result = f(*args, **kwargs)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\functions.py", line 165, in wrapper
    result = arg.add_missing(result)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 41, in add_missing
    ar = combine_missing(ar, self._array)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 20, in combine_missing
    return pa.Array.from_buffers(a.type, len(a), [nulls_buffer, buffers[1]])
  File "pyarrow\array.pxi", line 910, in pyarrow.lib.Array.from_buffers
ValueError: Type's expected number of buffers (3) did not match the passed number (2).

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 102, in evaluate
    result = self[expression]
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 161, in __getitem__
    raise KeyError("Unknown variables or column: %r" % (variable,))
KeyError: 'Unknown variables or column: "where(str_equals(__col1, \'\'), \'fill\', __col1)"'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 3556, in table_part
    values[name] = df.evaluate(name)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 2620, in evaluate
    return self._evaluate_implementation(expression, i1=i1, i2=i2, out=out, selection=selection, filtered=filtered, array_type=array_type, parallel=parallel, chunk_size=chunk_size)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 5441, in _evaluate_implementation
    dtypes[expression] = dtype = df.data_type(expression)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 1979, in data_type
    data = self.evaluate(expression, 0, 1, filtered=True, array_type=array_type, parallel=False)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 2620, in evaluate
    return self._evaluate_implementation(expression, i1=i1, i2=i2, out=out, selection=selection, filtered=filtered, array_type=array_type, parallel=parallel, chunk_size=chunk_size)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\dataframe.py", line 5528, in _evaluate_implementation
    value = scope.evaluate(expression)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 102, in evaluate
    result = self[expression]
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 153, in __getitem__
    values = self.evaluate(expression)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\scopes.py", line 108, in evaluate
    result = eval(expression, expression_namespace, self)
  File "<string>", line 1, in <module>
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 149, in wrapper
    result = f(*args, **kwargs)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\functions.py", line 165, in wrapper
    result = arg.add_missing(result)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 41, in add_missing
    ar = combine_missing(ar, self._array)
  File "C:\Users\kmcentush\Miniconda3\envs\api\lib\site-packages\vaex\arrow\numpy_dispatch.py", line 20, in combine_missing
    return pa.Array.from_buffers(a.type, len(a), [nulls_buffer, buffers[1]])
  File "pyarrow\array.pxi", line 910, in pyarrow.lib.Array.from_buffers
ValueError: Type's expected number of buffers (3) did not match the passed number (2).
 ```
</details>


Discussion:
Thanks for the reproducible example!

Resolving patch:
diff --git a/packages/vaex-core/vaex/arrow/numpy_dispatch.py b/packages/vaex-core/vaex/arrow/numpy_dispatch.py
--- a/packages/vaex-core/vaex/arrow/numpy_dispatch.py
+++ b/packages/vaex-core/vaex/arrow/numpy_dispatch.py
@@ -17,7 +17,7 @@ def combine_missing(a, b):
     else:
         nulls_buffer = None
     buffers = a.buffers()
-    return pa.Array.from_buffers(a.type, len(a), [nulls_buffer, buffers[1]])
+    return pa.Array.from_buffers(a.type, len(a), [nulls_buffer] + buffers[1:])
 
 class NumpyDispatch:
     def __init__(self, ar):


Test patch:
diff --git a/tests/compute_test.py b/tests/compute_test.py
--- a/tests/compute_test.py
+++ b/tests/compute_test.py
@@ -62,3 +62,9 @@ def test_mix_string_and_numeric(x, s):
     assert ((df.s == 'a') | (df.x == 1)).tolist() == [True, True, False, None]
     assert (('a' == df.s) | (df.x == 1)).tolist() == [True, True, False, None]
     assert ((df.x == 1) | (df.s == 'a')).tolist() == [True, True, False, None]
+
+
+def test_where(s):
+    df = vaex.from_arrays(s=s)
+    expr = df.func.where(df['s'] == 'a', 'A', df['s'])
+    assert expr.tolist() == ['A', 'b', None, 'd']