rover-df 1.0.1 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/rover/data_frame.rb +12 -1
- data/lib/rover/vector.rb +11 -1
- data/lib/rover/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: fda55b893da90eb87f53722b328d5150649ce9d91d1d49be1a9523a11229ab30
|
|
4
|
+
data.tar.gz: 1b18963c432f5489a1f89cf88d0cd509d4ec6a28d4b0bb2e5c400d66f7d2921e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 0d69590856829d59616750b3912579f9cf78b1ae33b9a9448cf72fa26f45596225847f6800b3c4a2bddb8d9390a280618de98457c76cc7be0f236f8844f4d4bd
|
|
7
|
+
data.tar.gz: af77b30aac473131c11994fafa9784580a33bf69da2422baad580a193bb3ea7a627b40430ab8295bb6b6330d30bfc11fda8bda6874379b9573794dc1ed38b4c9
|
data/CHANGELOG.md
CHANGED
data/lib/rover/data_frame.rb
CHANGED
|
@@ -65,13 +65,19 @@ module Rover
|
|
|
65
65
|
end
|
|
66
66
|
|
|
67
67
|
def [](where)
|
|
68
|
-
|
|
68
|
+
# TODO use path for all vectors in 2.0
|
|
69
|
+
if (where.is_a?(Vector) && (where.type == :bool || Vector::INTEGER_TYPES.include?(where.type))) || where.is_a?(Numeric) || where.is_a?(Range) || (where.is_a?(Array) && where.all?(Integer))
|
|
69
70
|
new_vectors = {}
|
|
70
71
|
@vectors.each do |k, v|
|
|
71
72
|
new_vectors[k] = v[where]
|
|
72
73
|
end
|
|
73
74
|
DataFrame.new(new_vectors)
|
|
74
75
|
elsif where.is_a?(Array)
|
|
76
|
+
# TODO raise error in 2.0
|
|
77
|
+
unless where.all? { |v| v.is_a?(String) || v.is_a?(Symbol) }
|
|
78
|
+
warn "[rover] Unsupported selector"
|
|
79
|
+
end
|
|
80
|
+
|
|
75
81
|
# multiple columns
|
|
76
82
|
df = DataFrame.new
|
|
77
83
|
where.each do |k|
|
|
@@ -80,6 +86,11 @@ module Rover
|
|
|
80
86
|
end
|
|
81
87
|
df
|
|
82
88
|
else
|
|
89
|
+
# TODO raise error in 2.0
|
|
90
|
+
unless where.is_a?(String) || where.is_a?(Symbol)
|
|
91
|
+
warn "[rover] Unsupported selector"
|
|
92
|
+
end
|
|
93
|
+
|
|
83
94
|
# single column
|
|
84
95
|
@vectors[where.to_s]
|
|
85
96
|
end
|
data/lib/rover/vector.rb
CHANGED
|
@@ -23,6 +23,9 @@ module Rover
|
|
|
23
23
|
|
|
24
24
|
NOT_SET = Object.new
|
|
25
25
|
|
|
26
|
+
# private
|
|
27
|
+
INTEGER_TYPES = [:int8, :int16, :int32, :int64, :uint8, :uint16, :uint32, :uint64]
|
|
28
|
+
|
|
26
29
|
def initialize(data, type: nil)
|
|
27
30
|
@data = cast_data(data, type: type)
|
|
28
31
|
raise ArgumentError, "Bad size: #{@data.shape}" unless @data.ndim == 1
|
|
@@ -87,7 +90,14 @@ module Rover
|
|
|
87
90
|
|
|
88
91
|
def [](v)
|
|
89
92
|
if v.is_a?(Vector)
|
|
90
|
-
|
|
93
|
+
case v.type
|
|
94
|
+
when :bool
|
|
95
|
+
Vector.new(v.to_numo.mask(@data))
|
|
96
|
+
when *INTEGER_TYPES
|
|
97
|
+
Vector.new(@data[v.to_numo])
|
|
98
|
+
else
|
|
99
|
+
raise ArgumentError, "Unsupported selector"
|
|
100
|
+
end
|
|
91
101
|
elsif v.is_a?(Numeric)
|
|
92
102
|
@data[v]
|
|
93
103
|
else
|
data/lib/rover/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rover-df
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Andrew Kane
|
|
@@ -55,7 +55,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
55
55
|
- !ruby/object:Gem::Version
|
|
56
56
|
version: '0'
|
|
57
57
|
requirements: []
|
|
58
|
-
rubygems_version: 4.0.
|
|
58
|
+
rubygems_version: 4.0.14
|
|
59
59
|
specification_version: 4
|
|
60
60
|
summary: Simple, powerful data frames for Ruby
|
|
61
61
|
test_files: []
|