Class: DaruLite::Core::MergeFrame
Defined Under Namespace
Classes: NilSorter
Instance Method Summary collapse
-
#initialize(left_df, right_df, opts = {}) ⇒ MergeFrame
constructor
quick-fix for issue #171.
- #join ⇒ Object
Constructor Details
#initialize(left_df, right_df, opts = {}) ⇒ MergeFrame
quick-fix for issue #171
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/daru_lite/core/merge.rb', line 21 def initialize(left_df, right_df, opts = {}) init_opts(opts) validate_on!(left_df, right_df) key_sanitizer = ->(h) { sanitize_merge_keys(h.values_at(*on)) } @left = df_to_a(left_df) @left.sort! { |a, b| safe_compare(a.values_at(*on), b.values_at(*on)) } @left_key_values = @left.map(&key_sanitizer) @right = df_to_a(right_df) @right.sort! { |a, b| safe_compare(a.values_at(*on), b.values_at(*on)) } @right_key_values = @right.map(&key_sanitizer) @left_keys, @right_keys = merge_keys(left_df, right_df, on) end |
Instance Method Details
#join ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 |
# File 'lib/daru_lite/core/merge.rb', line 37 def join res = [] until left.empty? && right.empty? lkey = first_left_key rkey = first_right_key row(lkey, rkey).tap { |r| res << r if r } end DaruLite::DataFrame.new(res, order: dataframe_vector_names) end |