def reject_values(*values)
      positions =
        size.times.to_a - @data.flat_map { |vec| vec.positions(*values) }
      # Handle the case when positions size is 1 and #row_at wouldn't return a df
      if positions.size == 1
        pos = positions.first
        row_at(pos..pos)
      else
        row_at(*positions)
      end
    end
Returns a dataframe in which rows with any of the mentioned values
are ignored.
@param [Array] values to reject to form the new dataframe
@return [Daru::DataFrame] Data Frame with only rows which doesn't
contain the mentioned values
@example
df = Daru::DataFrame.new({
a: [1,    2,          3,   nil,        Float::NAN, nil, 1,   7],
b: [:a,  :b,          nil, Float::NAN, nil,        3,   5,   8],
c: ['a',  Float::NAN, 3,   4,          3,          5,   nil, 7]
}, index: 11..18)
df.reject_values nil, Float::NAN
# => #<Daru::DataFrame(2x3)>
#       a   b   c
#   11   1   a   a
#   18   7   8   7