polars-df 0.2.1-x86_64-linux → 0.2.2-x86_64-linux
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 +6 -0
- data/Cargo.lock +1 -1
- data/LICENSE-THIRD-PARTY.txt +110 -110
- data/README.md +6 -3
- data/lib/polars/3.0/polars.so +0 -0
- data/lib/polars/3.1/polars.so +0 -0
- data/lib/polars/3.2/polars.so +0 -0
- data/lib/polars/data_frame.rb +66 -3
- data/lib/polars/io.rb +3 -1
- data/lib/polars/series.rb +71 -11
- data/lib/polars/slice.rb +1 -1
- data/lib/polars/utils.rb +20 -0
- data/lib/polars/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6cc0fce7d6a3a5a5e6aad0422b6d6fc5f74894ca27881de1ea363c8c5ac77290
|
4
|
+
data.tar.gz: bf2921df3c70489b0be71e4e8043fa0cff4b9f366f1f4744c261bfc8dacc1c76
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9670316d6dc4483de1c16e934a507399b332d48ef779ccb11b19ae35761f56bcb34bba87b2a77855bad788cddbb5f76f0afb1eb8ec593bef5eff99d69e769437
|
7
|
+
data.tar.gz: 231985664f2e28e965751aa6a6b0c518d206caf084c2ce464dfbf4230420df07beb5465a49e0538f5004d805f9a269883980cf8a999858488be3dce11f24bee2
|
data/CHANGELOG.md
CHANGED
data/Cargo.lock
CHANGED
data/LICENSE-THIRD-PARTY.txt
CHANGED
@@ -1640,6 +1640,33 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
|
|
1640
1640
|
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
1641
1641
|
DEALINGS IN THE SOFTWARE.
|
1642
1642
|
|
1643
|
+
================================================================================
|
1644
|
+
array-init-cursor LICENSE-MIT
|
1645
|
+
================================================================================
|
1646
|
+
|
1647
|
+
MIT License
|
1648
|
+
|
1649
|
+
Copyright (c) 2021 The Planus Project Developers
|
1650
|
+
|
1651
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
1652
|
+
of this software and associated documentation files (the "Software"), to deal
|
1653
|
+
in the Software without restriction, including without limitation the rights
|
1654
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
1655
|
+
copies of the Software, and to permit persons to whom the Software is
|
1656
|
+
furnished to do so, subject to the following conditions:
|
1657
|
+
|
1658
|
+
The above copyright notice and this permission notice shall be included in all
|
1659
|
+
copies or substantial portions of the Software.
|
1660
|
+
|
1661
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
1662
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
1663
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
1664
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
1665
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
1666
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
1667
|
+
SOFTWARE.
|
1668
|
+
|
1669
|
+
|
1643
1670
|
================================================================================
|
1644
1671
|
array-init-cursor LICENSE-APACHE
|
1645
1672
|
================================================================================
|
@@ -1822,33 +1849,6 @@ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
1822
1849
|
END OF TERMS AND CONDITIONS
|
1823
1850
|
|
1824
1851
|
|
1825
|
-
================================================================================
|
1826
|
-
array-init-cursor LICENSE-MIT
|
1827
|
-
================================================================================
|
1828
|
-
|
1829
|
-
MIT License
|
1830
|
-
|
1831
|
-
Copyright (c) 2021 The Planus Project Developers
|
1832
|
-
|
1833
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
1834
|
-
of this software and associated documentation files (the "Software"), to deal
|
1835
|
-
in the Software without restriction, including without limitation the rights
|
1836
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
1837
|
-
copies of the Software, and to permit persons to whom the Software is
|
1838
|
-
furnished to do so, subject to the following conditions:
|
1839
|
-
|
1840
|
-
The above copyright notice and this permission notice shall be included in all
|
1841
|
-
copies or substantial portions of the Software.
|
1842
|
-
|
1843
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
1844
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
1845
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
1846
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
1847
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
1848
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
1849
|
-
SOFTWARE.
|
1850
|
-
|
1851
|
-
|
1852
1852
|
================================================================================
|
1853
1853
|
arrow-format LICENSE
|
1854
1854
|
================================================================================
|
@@ -14571,6 +14571,36 @@ OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
|
|
14571
14571
|
ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
14572
14572
|
--------------------------------------------------------------------------------
|
14573
14573
|
|
14574
|
+
================================================================================
|
14575
|
+
jemallocator LICENSE-MIT
|
14576
|
+
================================================================================
|
14577
|
+
|
14578
|
+
Copyright (c) 2014 Alex Crichton
|
14579
|
+
|
14580
|
+
Permission is hereby granted, free of charge, to any
|
14581
|
+
person obtaining a copy of this software and associated
|
14582
|
+
documentation files (the "Software"), to deal in the
|
14583
|
+
Software without restriction, including without
|
14584
|
+
limitation the rights to use, copy, modify, merge,
|
14585
|
+
publish, distribute, sublicense, and/or sell copies of
|
14586
|
+
the Software, and to permit persons to whom the Software
|
14587
|
+
is furnished to do so, subject to the following
|
14588
|
+
conditions:
|
14589
|
+
|
14590
|
+
The above copyright notice and this permission notice
|
14591
|
+
shall be included in all copies or substantial portions
|
14592
|
+
of the Software.
|
14593
|
+
|
14594
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
|
14595
|
+
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
|
14596
|
+
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
14597
|
+
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
|
14598
|
+
SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
14599
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
14600
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
|
14601
|
+
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
14602
|
+
DEALINGS IN THE SOFTWARE.
|
14603
|
+
|
14574
14604
|
================================================================================
|
14575
14605
|
jemallocator LICENSE-APACHE
|
14576
14606
|
================================================================================
|
@@ -14777,36 +14807,6 @@ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14777
14807
|
See the License for the specific language governing permissions and
|
14778
14808
|
limitations under the License.
|
14779
14809
|
|
14780
|
-
================================================================================
|
14781
|
-
jemallocator LICENSE-MIT
|
14782
|
-
================================================================================
|
14783
|
-
|
14784
|
-
Copyright (c) 2014 Alex Crichton
|
14785
|
-
|
14786
|
-
Permission is hereby granted, free of charge, to any
|
14787
|
-
person obtaining a copy of this software and associated
|
14788
|
-
documentation files (the "Software"), to deal in the
|
14789
|
-
Software without restriction, including without
|
14790
|
-
limitation the rights to use, copy, modify, merge,
|
14791
|
-
publish, distribute, sublicense, and/or sell copies of
|
14792
|
-
the Software, and to permit persons to whom the Software
|
14793
|
-
is furnished to do so, subject to the following
|
14794
|
-
conditions:
|
14795
|
-
|
14796
|
-
The above copyright notice and this permission notice
|
14797
|
-
shall be included in all copies or substantial portions
|
14798
|
-
of the Software.
|
14799
|
-
|
14800
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF
|
14801
|
-
ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
|
14802
|
-
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
|
14803
|
-
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT
|
14804
|
-
SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
14805
|
-
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
14806
|
-
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
|
14807
|
-
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
14808
|
-
DEALINGS IN THE SOFTWARE.
|
14809
|
-
|
14810
14810
|
================================================================================
|
14811
14811
|
jobserver LICENSE-APACHE
|
14812
14812
|
================================================================================
|
@@ -27075,6 +27075,33 @@ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR
|
|
27075
27075
|
IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
27076
27076
|
DEALINGS IN THE SOFTWARE.
|
27077
27077
|
|
27078
|
+
================================================================================
|
27079
|
+
planus LICENSE-MIT
|
27080
|
+
================================================================================
|
27081
|
+
|
27082
|
+
MIT License
|
27083
|
+
|
27084
|
+
Copyright (c) 2021 The Planus Project Developers
|
27085
|
+
|
27086
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
27087
|
+
of this software and associated documentation files (the "Software"), to deal
|
27088
|
+
in the Software without restriction, including without limitation the rights
|
27089
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
27090
|
+
copies of the Software, and to permit persons to whom the Software is
|
27091
|
+
furnished to do so, subject to the following conditions:
|
27092
|
+
|
27093
|
+
The above copyright notice and this permission notice shall be included in all
|
27094
|
+
copies or substantial portions of the Software.
|
27095
|
+
|
27096
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
27097
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
27098
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
27099
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
27100
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
27101
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
27102
|
+
SOFTWARE.
|
27103
|
+
|
27104
|
+
|
27078
27105
|
================================================================================
|
27079
27106
|
planus LICENSE-APACHE
|
27080
27107
|
================================================================================
|
@@ -27257,33 +27284,6 @@ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
|
27257
27284
|
END OF TERMS AND CONDITIONS
|
27258
27285
|
|
27259
27286
|
|
27260
|
-
================================================================================
|
27261
|
-
planus LICENSE-MIT
|
27262
|
-
================================================================================
|
27263
|
-
|
27264
|
-
MIT License
|
27265
|
-
|
27266
|
-
Copyright (c) 2021 The Planus Project Developers
|
27267
|
-
|
27268
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
27269
|
-
of this software and associated documentation files (the "Software"), to deal
|
27270
|
-
in the Software without restriction, including without limitation the rights
|
27271
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
27272
|
-
copies of the Software, and to permit persons to whom the Software is
|
27273
|
-
furnished to do so, subject to the following conditions:
|
27274
|
-
|
27275
|
-
The above copyright notice and this permission notice shall be included in all
|
27276
|
-
copies or substantial portions of the Software.
|
27277
|
-
|
27278
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
27279
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
27280
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
27281
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
27282
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
27283
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
27284
|
-
SOFTWARE.
|
27285
|
-
|
27286
|
-
|
27287
27287
|
================================================================================
|
27288
27288
|
polars LICENSE
|
27289
27289
|
================================================================================
|
@@ -30036,6 +30036,32 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
30036
30036
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
30037
30037
|
SOFTWARE.
|
30038
30038
|
|
30039
|
+
================================================================================
|
30040
|
+
rb-sys-env LICENSE-MIT
|
30041
|
+
================================================================================
|
30042
|
+
|
30043
|
+
The MIT License (MIT)
|
30044
|
+
|
30045
|
+
Copyright (c) 2021-2022 Ian Ker-Seymer
|
30046
|
+
|
30047
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
30048
|
+
of this software and associated documentation files (the "Software"), to deal
|
30049
|
+
in the Software without restriction, including without limitation the rights
|
30050
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
30051
|
+
copies of the Software, and to permit persons to whom the Software is
|
30052
|
+
furnished to do so, subject to the following conditions:
|
30053
|
+
|
30054
|
+
The above copyright notice and this permission notice shall be included in all
|
30055
|
+
copies or substantial portions of the Software.
|
30056
|
+
|
30057
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
30058
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
30059
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
30060
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
30061
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
30062
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
30063
|
+
SOFTWARE.
|
30064
|
+
|
30039
30065
|
================================================================================
|
30040
30066
|
rb-sys-env LICENSE-APACHE
|
30041
30067
|
================================================================================
|
@@ -30231,32 +30257,6 @@ rb-sys-env LICENSE-APACHE
|
|
30231
30257
|
See the License for the specific language governing permissions and
|
30232
30258
|
limitations under the License.
|
30233
30259
|
|
30234
|
-
================================================================================
|
30235
|
-
rb-sys-env LICENSE-MIT
|
30236
|
-
================================================================================
|
30237
|
-
|
30238
|
-
The MIT License (MIT)
|
30239
|
-
|
30240
|
-
Copyright (c) 2021-2022 Ian Ker-Seymer
|
30241
|
-
|
30242
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
30243
|
-
of this software and associated documentation files (the "Software"), to deal
|
30244
|
-
in the Software without restriction, including without limitation the rights
|
30245
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
30246
|
-
copies of the Software, and to permit persons to whom the Software is
|
30247
|
-
furnished to do so, subject to the following conditions:
|
30248
|
-
|
30249
|
-
The above copyright notice and this permission notice shall be included in all
|
30250
|
-
copies or substantial portions of the Software.
|
30251
|
-
|
30252
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
30253
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
30254
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
30255
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
30256
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
30257
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
30258
|
-
SOFTWARE.
|
30259
|
-
|
30260
30260
|
================================================================================
|
30261
30261
|
regex LICENSE-APACHE
|
30262
30262
|
================================================================================
|
data/README.md
CHANGED
@@ -41,6 +41,9 @@ From a CSV
|
|
41
41
|
|
42
42
|
```ruby
|
43
43
|
Polars.read_csv("file.csv")
|
44
|
+
|
45
|
+
# or lazily with
|
46
|
+
Polars.scan_csv("file.csv")
|
44
47
|
```
|
45
48
|
|
46
49
|
From Parquet
|
@@ -135,9 +138,9 @@ df[Polars.col("a") <= 2]
|
|
135
138
|
And, or, and exclusive or
|
136
139
|
|
137
140
|
```ruby
|
138
|
-
df[(Polars.col("a") >
|
139
|
-
df[(Polars.col("a") >
|
140
|
-
df[(Polars.col("a") >
|
141
|
+
df[(Polars.col("a") > 1) & (Polars.col("b") == "two")] # and
|
142
|
+
df[(Polars.col("a") > 1) | (Polars.col("b") == "two")] # or
|
143
|
+
df[(Polars.col("a") > 1) ^ (Polars.col("b") == "two")] # xor
|
141
144
|
```
|
142
145
|
|
143
146
|
## Operations
|
data/lib/polars/3.0/polars.so
CHANGED
Binary file
|
data/lib/polars/3.1/polars.so
CHANGED
Binary file
|
data/lib/polars/3.2/polars.so
CHANGED
Binary file
|
data/lib/polars/data_frame.rb
CHANGED
@@ -277,6 +277,7 @@ module Polars
|
|
277
277
|
_df.height
|
278
278
|
end
|
279
279
|
alias_method :count, :height
|
280
|
+
alias_method :length, :height
|
280
281
|
|
281
282
|
# Get the width of the DataFrame.
|
282
283
|
#
|
@@ -541,7 +542,7 @@ module Polars
|
|
541
542
|
|
542
543
|
if col_selection.is_a?(Array)
|
543
544
|
# df[.., [1, 2]]
|
544
|
-
if is_int_sequence(col_selection)
|
545
|
+
if Utils.is_int_sequence(col_selection)
|
545
546
|
series_list = col_selection.map { |i| to_series(i) }
|
546
547
|
df = self.class.new(series_list)
|
547
548
|
return df[row_selection]
|
@@ -574,6 +575,23 @@ module Polars
|
|
574
575
|
# df[["foo", "bar"]]
|
575
576
|
return _from_rbdf(_df.select(item))
|
576
577
|
end
|
578
|
+
|
579
|
+
if Utils.is_int_sequence(item)
|
580
|
+
item = Series.new("", item)
|
581
|
+
end
|
582
|
+
|
583
|
+
if item.is_a?(Series)
|
584
|
+
dtype = item.dtype
|
585
|
+
if dtype == Utf8
|
586
|
+
return _from_rbdf(_df.select(item))
|
587
|
+
elsif dtype == UInt32
|
588
|
+
return _from_rbdf(_df.take_with_series(item._s))
|
589
|
+
elsif [UInt8, UInt16, UInt64, Int8, Int16, Int32, Int64].include?(dtype)
|
590
|
+
return _from_rbdf(
|
591
|
+
_df.take_with_series(_pos_idxs(item, 0)._s)
|
592
|
+
)
|
593
|
+
end
|
594
|
+
end
|
577
595
|
end
|
578
596
|
|
579
597
|
# Ruby-specific
|
@@ -4662,8 +4680,53 @@ module Polars
|
|
4662
4680
|
end
|
4663
4681
|
end
|
4664
4682
|
|
4665
|
-
|
4666
|
-
|
4683
|
+
def _pos_idxs(idxs, dim)
|
4684
|
+
idx_type = Polars._get_idx_type
|
4685
|
+
|
4686
|
+
if idxs.is_a?(Series)
|
4687
|
+
if idxs.dtype == idx_type
|
4688
|
+
return idxs
|
4689
|
+
end
|
4690
|
+
if [UInt8, UInt16, idx_type == UInt32 ? UInt64 : UInt32, Int8, Int16, Int32, Int64].include?(idxs.dtype)
|
4691
|
+
if idx_type == UInt32
|
4692
|
+
if [Int64, UInt64].include?(idxs.dtype)
|
4693
|
+
if idxs.max >= 2**32
|
4694
|
+
raise ArgumentError, "Index positions should be smaller than 2^32."
|
4695
|
+
end
|
4696
|
+
end
|
4697
|
+
if idxs.dtype == Int64
|
4698
|
+
if idxs.min < -(2**32)
|
4699
|
+
raise ArgumentError, "Index positions should be bigger than -2^32 + 1."
|
4700
|
+
end
|
4701
|
+
end
|
4702
|
+
end
|
4703
|
+
if [Int8, Int16, Int32, Int64].include?(idxs.dtype)
|
4704
|
+
if idxs.min < 0
|
4705
|
+
if idx_type == UInt32
|
4706
|
+
if [Int8, Int16].include?(idxs.dtype)
|
4707
|
+
idxs = idxs.cast(Int32)
|
4708
|
+
end
|
4709
|
+
else
|
4710
|
+
if [Int8, Int16, Int32].include?(idxs.dtype)
|
4711
|
+
idxs = idxs.cast(Int64)
|
4712
|
+
end
|
4713
|
+
end
|
4714
|
+
|
4715
|
+
idxs =
|
4716
|
+
Polars.select(
|
4717
|
+
Polars.when(Polars.lit(idxs) < 0)
|
4718
|
+
.then(shape[dim] + Polars.lit(idxs))
|
4719
|
+
.otherwise(Polars.lit(idxs))
|
4720
|
+
).to_series
|
4721
|
+
end
|
4722
|
+
end
|
4723
|
+
|
4724
|
+
return idxs.cast(idx_type)
|
4725
|
+
end
|
4726
|
+
end
|
4727
|
+
|
4728
|
+
raise ArgumentError, "Unsupported idxs datatype."
|
4729
|
+
end
|
4667
4730
|
|
4668
4731
|
# @private
|
4669
4732
|
def self.hash_to_rbdf(data, columns: nil)
|
data/lib/polars/io.rb
CHANGED
@@ -606,8 +606,10 @@ module Polars
|
|
606
606
|
sql
|
607
607
|
elsif sql.is_a?(ActiveRecord::Relation)
|
608
608
|
sql.connection.select_all(sql.to_sql)
|
609
|
+
elsif sql.is_a?(String)
|
610
|
+
ActiveRecord::Base.connection.select_all(sql)
|
609
611
|
else
|
610
|
-
raise ArgumentError, "Expected ActiveRecord::Relation
|
612
|
+
raise ArgumentError, "Expected ActiveRecord::Relation, ActiveRecord::Result, or String"
|
611
613
|
end
|
612
614
|
data = {}
|
613
615
|
result.columns.each_with_index do |k, i|
|
data/lib/polars/series.rb
CHANGED
@@ -263,6 +263,10 @@ module Polars
|
|
263
263
|
#
|
264
264
|
# @return [Object]
|
265
265
|
def [](item)
|
266
|
+
if item.is_a?(Series) && [UInt8, UInt16, UInt32, UInt64, Int8, Int16, Int32, Int64].include?(item.dtype)
|
267
|
+
return Utils.wrap_s(_s.take_with_series(_pos_idxs(item)._s))
|
268
|
+
end
|
269
|
+
|
266
270
|
if item.is_a?(Integer)
|
267
271
|
return _s.get_idx(item)
|
268
272
|
end
|
@@ -271,6 +275,10 @@ module Polars
|
|
271
275
|
return Slice.new(self).apply(item)
|
272
276
|
end
|
273
277
|
|
278
|
+
if Utils.is_int_sequence(item)
|
279
|
+
return Utils.wrap_s(_s.take_with_series(_pos_idxs(Series.new("", item))._s))
|
280
|
+
end
|
281
|
+
|
274
282
|
raise ArgumentError, "Cannot get item of type: #{item.class.name}"
|
275
283
|
end
|
276
284
|
|
@@ -287,24 +295,23 @@ module Polars
|
|
287
295
|
end
|
288
296
|
|
289
297
|
if key.is_a?(Series)
|
290
|
-
if key.dtype ==
|
298
|
+
if key.dtype == Boolean
|
291
299
|
self._s = set(key, value)._s
|
292
|
-
elsif key.dtype ==
|
293
|
-
self._s = set_at_idx(key.cast(
|
294
|
-
elsif key.dtype ==
|
300
|
+
elsif key.dtype == UInt64
|
301
|
+
self._s = set_at_idx(key.cast(UInt32), value)._s
|
302
|
+
elsif key.dtype == UInt32
|
295
303
|
self._s = set_at_idx(key, value)._s
|
296
304
|
else
|
297
305
|
raise Todo
|
298
306
|
end
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
307
|
+
elsif key.is_a?(Array)
|
308
|
+
s = Utils.wrap_s(sequence_to_rbseries("", key, dtype: UInt32))
|
309
|
+
self[s] = value
|
310
|
+
elsif key.is_a?(Range)
|
311
|
+
s = Series.new("", key, dtype: UInt32)
|
303
312
|
self[s] = value
|
304
313
|
elsif key.is_a?(Integer)
|
305
|
-
|
306
|
-
# self[[key]] = value
|
307
|
-
set_at_idx(key, value)
|
314
|
+
self[[key]] = value
|
308
315
|
else
|
309
316
|
raise ArgumentError, "cannot use #{key} for indexing"
|
310
317
|
end
|
@@ -3527,6 +3534,59 @@ module Polars
|
|
3527
3534
|
end
|
3528
3535
|
end
|
3529
3536
|
|
3537
|
+
def _pos_idxs(idxs)
|
3538
|
+
idx_type = Polars._get_idx_type
|
3539
|
+
|
3540
|
+
if idxs.is_a?(Series)
|
3541
|
+
if idxs.dtype == idx_type
|
3542
|
+
return idxs
|
3543
|
+
end
|
3544
|
+
if [UInt8, UInt16, idx_type == UInt32 ? UInt64 : UInt32, Int8, Int16, Int32, Int64].include?(idxs.dtype)
|
3545
|
+
if idx_type == UInt32
|
3546
|
+
if [Int64, UInt64].include?(idxs.dtype)
|
3547
|
+
if idxs.max >= 2**32
|
3548
|
+
raise ArgumentError, "Index positions should be smaller than 2^32."
|
3549
|
+
end
|
3550
|
+
end
|
3551
|
+
if idxs.dtype == Int64
|
3552
|
+
if idxs.min < -(2**32)
|
3553
|
+
raise ArgumentError, "Index positions should be bigger than -2^32 + 1."
|
3554
|
+
end
|
3555
|
+
end
|
3556
|
+
end
|
3557
|
+
if [Int8, Int16, Int32, Int64].include?(idxs.dtype)
|
3558
|
+
if idxs.min < 0
|
3559
|
+
if idx_type == UInt32
|
3560
|
+
if [Int8, Int16].include?(idxs.dtype)
|
3561
|
+
idxs = idxs.cast(Int32)
|
3562
|
+
end
|
3563
|
+
else
|
3564
|
+
if [Int8, Int16, Int32].include?(idxs.dtype)
|
3565
|
+
idxs = idxs.cast(Int64)
|
3566
|
+
end
|
3567
|
+
end
|
3568
|
+
|
3569
|
+
# Update negative indexes to absolute indexes.
|
3570
|
+
return (
|
3571
|
+
idxs.to_frame
|
3572
|
+
.select(
|
3573
|
+
Polars.when(Polars.col(idxs.name) < 0)
|
3574
|
+
.then(len + Polars.col(idxs.name))
|
3575
|
+
.otherwise(Polars.col(idxs.name))
|
3576
|
+
.cast(idx_type)
|
3577
|
+
)
|
3578
|
+
.to_series(0)
|
3579
|
+
)
|
3580
|
+
end
|
3581
|
+
end
|
3582
|
+
|
3583
|
+
return idxs.cast(idx_type)
|
3584
|
+
end
|
3585
|
+
end
|
3586
|
+
|
3587
|
+
raise ArgumentError, "Unsupported idxs datatype."
|
3588
|
+
end
|
3589
|
+
|
3530
3590
|
def _comp(other, op)
|
3531
3591
|
if other.is_a?(Series)
|
3532
3592
|
return Utils.wrap_s(_s.send(op, other._s))
|
data/lib/polars/slice.rb
CHANGED
@@ -56,7 +56,7 @@ module Polars
|
|
56
56
|
# Normalize slice bounds, identify unbounded and/or zero-length slices.
|
57
57
|
def _slice_setup(s)
|
58
58
|
# can normalize slice indices as we know object size
|
59
|
-
obj_len = @obj.
|
59
|
+
obj_len = @obj.length
|
60
60
|
start = if s.begin
|
61
61
|
if s.begin < 0
|
62
62
|
[s.begin + obj_len, 0].max
|
data/lib/polars/utils.rb
CHANGED
@@ -181,6 +181,26 @@ module Polars
|
|
181
181
|
val.all? { |x| x.is_a?(eltype) }
|
182
182
|
end
|
183
183
|
|
184
|
+
def self.is_bool_sequence(val)
|
185
|
+
val.is_a?(Array) && val.all? { |x| x == true || x == false }
|
186
|
+
end
|
187
|
+
|
188
|
+
def self.is_dtype_sequence(val)
|
189
|
+
val.is_a?(Array) && val.all? { |x| is_polars_dtype(x) }
|
190
|
+
end
|
191
|
+
|
192
|
+
def self.is_int_sequence(val)
|
193
|
+
val.is_a?(Array) && _is_iterable_of(val, Integer)
|
194
|
+
end
|
195
|
+
|
196
|
+
def self.is_expr_sequence(val)
|
197
|
+
val.is_a?(Array) && _is_iterable_of(val, Expr)
|
198
|
+
end
|
199
|
+
|
200
|
+
def self.is_rbexpr_sequence(val)
|
201
|
+
val.is_a?(Array) && _is_iterable_of(val, RbExpr)
|
202
|
+
end
|
203
|
+
|
184
204
|
def self.is_str_sequence(val, allow_str: false)
|
185
205
|
if allow_str == false && val.is_a?(String)
|
186
206
|
false
|
data/lib/polars/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: polars-df
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.2
|
5
5
|
platform: x86_64-linux
|
6
6
|
authors:
|
7
7
|
- Andrew Kane
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-01-
|
11
|
+
date: 2023-01-20 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description:
|
14
14
|
email: andrew@ankane.org
|
@@ -82,7 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
82
82
|
- !ruby/object:Gem::Version
|
83
83
|
version: '0'
|
84
84
|
requirements: []
|
85
|
-
rubygems_version: 3.4.
|
85
|
+
rubygems_version: 3.4.4
|
86
86
|
signing_key:
|
87
87
|
specification_version: 4
|
88
88
|
summary: Blazingly fast DataFrames for Ruby
|