Sha256: 7ac142d3a2ae5561d4e7ae75567e53e800770e8888549b3e59cc0808981479ae

Contents?: true

Size: 962 Bytes

Versions: 8

Compression:

Stored size: 962 Bytes

Contents

# frozen_string_literal: true

module RedAmber
  # mix-ins for the class DataFrame
  module DataFrameIndexable
    # Common method
    def map_indices(*indices)
      return self if indices.empty?

      indices = indices[0].data if indices[0].is_a?(Vector)

      new_dataframe_by(indices)
    end

    # @param sort_keys [Arrow::SortKey]
    #   :key, "key" or "+key" denotes ascending,
    #   "-key" denotes descending order
    # @return [RedAmber::Vector] Sorted indices in Vector
    def sort_indices(*sort_keys)
      indices = @table.sort_indices(sort_keys.flatten)
      Vector.new(indices)
    end

    # @return [RedAmber::DataFrame] Sorted DataFrame
    def sort(*sort_keys)
      indices = @table.sort_indices(sort_keys.flatten)

      new_dataframe_by(indices)
    end

    private

    def new_dataframe_by(index_array)
      t = Arrow::Function.find(:take).execute([@table, index_array]).value
      RedAmber::DataFrame.new(t)
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
red_amber-0.2.3 lib/red_amber/data_frame_indexable.rb
red_amber-0.2.2 lib/red_amber/data_frame_indexable.rb
red_amber-0.2.1 lib/red_amber/data_frame_indexable.rb
red_amber-0.2.0 lib/red_amber/data_frame_indexable.rb
red_amber-0.1.8 lib/red_amber/data_frame_indexable.rb
red_amber-0.1.7 lib/red_amber/data_frame_indexable.rb
red_amber-0.1.6 lib/red_amber/data_frame_indexable.rb
red_amber-0.1.5 lib/red_amber/data_frame_indexable.rb