Module: Daru::Core::Query
- Defined in:
- lib/daru/core/query.rb
Defined Under Namespace
Classes: BoolArray
Class Method Summary collapse
- .apply_scalar_operator(operator, data, other) ⇒ Object
- .apply_vector_operator(operator, vector, other) ⇒ Object
- .df_where(data_frame, bool_array) ⇒ Object
- .vector_apply_where(dv, bool_array) ⇒ Object
- .vector_where(dv, bool_array) ⇒ Object
Class Method Details
.apply_scalar_operator(operator, data, other) ⇒ Object
41 42 43 |
# File 'lib/daru/core/query.rb', line 41 def apply_scalar_operator operator, data, other BoolArray.new(data.map { |d| !!d.send(operator, other) if d.respond_to?(operator) }) end |
.apply_vector_operator(operator, vector, other) ⇒ Object
45 46 47 |
# File 'lib/daru/core/query.rb', line 45 def apply_vector_operator operator, vector, other BoolArray.new(vector.zip(other).map { |d, o| !!d.send(operator, o) }) end |
.df_where(data_frame, bool_array) ⇒ Object
49 50 51 52 53 54 55 56 57 |
# File 'lib/daru/core/query.rb', line 49 def df_where data_frame, bool_array vecs = data_frame.map do |vector| vector.where(bool_array) end Daru::DataFrame.new( vecs, order: data_frame.vectors, index: vecs[0].index, clone: false ) end |
.vector_apply_where(dv, bool_array) ⇒ Object
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 |
# File 'lib/daru/core/query.rb', line 73 def vector_apply_where dv, bool_array _data, new_index = fetch_new_data_and_index dv, bool_array all_index = dv.index all_data = all_index.map { |idx| new_index.include?(idx) ? yield(dv[idx]) : dv[idx] } resultant_dv = Daru::Vector.new all_data, index: dv.index.class.new(all_index), dtype: dv.dtype, type: dv.type, name: dv.name # Preserve categories order for category vector resultant_dv.categories = dv.categories if dv.category? resultant_dv end |
.vector_where(dv, bool_array) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/daru/core/query.rb', line 59 def vector_where dv, bool_array new_data, new_index = fetch_new_data_and_index dv, bool_array resultant_dv = Daru::Vector.new new_data, index: dv.index.class.new(new_index), dtype: dv.dtype, type: dv.type, name: dv.name # Preserve categories order for category vector resultant_dv.categories = dv.categories if dv.category? resultant_dv end |