polars-df 0.2.5 → 0.3.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.
@@ -367,9 +367,7 @@ module Polars
367
367
  # # │ i64 ┆ i64 ┆ str │
368
368
  # # ╞═══════╪════════╪════════╡
369
369
  # # │ 1 ┆ 6 ┆ a │
370
- # # ├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
371
370
  # # │ 2 ┆ 7 ┆ b │
372
- # # ├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
373
371
  # # │ 3 ┆ 8 ┆ c │
374
372
  # # └───────┴────────┴────────┘
375
373
  def columns=(columns)
@@ -529,8 +527,12 @@ module Polars
529
527
  columns.include?(name)
530
528
  end
531
529
 
532
- # def each
533
- # end
530
+ # Returns an enumerator.
531
+ #
532
+ # @return [Object]
533
+ def each(&block)
534
+ get_columns.each(&block)
535
+ end
534
536
 
535
537
  # Returns subset of the DataFrame.
536
538
  #
@@ -637,6 +639,7 @@ module Polars
637
639
  # Set item.
638
640
  #
639
641
  # @return [Object]
642
+ #
640
643
  # def []=(key, value)
641
644
  # if key.is_a?(String)
642
645
  # raise TypeError, "'DataFrame' object does not support 'Series' assignment by index. Use 'DataFrame.with_columns'"
@@ -645,6 +648,25 @@ module Polars
645
648
  # raise Todo
646
649
  # end
647
650
 
651
+
652
+ # Return the dataframe as a scalar.
653
+ #
654
+ # Equivalent to `df[0,0]`, with a check that the shape is (1,1).
655
+ #
656
+ # @return [Object]
657
+ #
658
+ # @example
659
+ # df = Polars::DataFrame.new({"a" => [1, 2, 3], "b" => [4, 5, 6]})
660
+ # result = df.select((Polars.col("a") * Polars.col("b")).sum)
661
+ # result.item
662
+ # # => 32
663
+ def item
664
+ if shape != [1, 1]
665
+ raise ArgumentError, "Can only call .item if the dataframe is of shape (1,1), dataframe is of shape #{shape}"
666
+ end
667
+ self[0, 0]
668
+ end
669
+
648
670
  # no to_arrow
649
671
 
650
672
  # Convert DataFrame to a hash mapping column name to values.
@@ -1008,7 +1030,6 @@ module Polars
1008
1030
  # # │ str ┆ i64 ┆ i64 ┆ i64 │
1009
1031
  # # ╞════════╪══════════╪══════════╪══════════╡
1010
1032
  # # │ a ┆ 1 ┆ 2 ┆ 3 │
1011
- # # ├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
1012
1033
  # # │ b ┆ 1 ┆ 2 ┆ 3 │
1013
1034
  # # └────────┴──────────┴──────────┴──────────┘
1014
1035
  #
@@ -1022,7 +1043,6 @@ module Polars
1022
1043
  # # │ i64 ┆ i64 ┆ i64 │
1023
1044
  # # ╞═════╪═════╪═════╡
1024
1045
  # # │ 1 ┆ 2 ┆ 3 │
1025
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1026
1046
  # # │ 1 ┆ 2 ┆ 3 │
1027
1047
  # # └─────┴─────┴─────┘
1028
1048
  #
@@ -1038,7 +1058,6 @@ module Polars
1038
1058
  # # │ str ┆ i64 ┆ i64 ┆ i64 │
1039
1059
  # # ╞═════╪═════╪═════╪═════╡
1040
1060
  # # │ a ┆ 1 ┆ 2 ┆ 3 │
1041
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1042
1061
  # # │ b ┆ 1 ┆ 2 ┆ 3 │
1043
1062
  # # └─────┴─────┴─────┴─────┘
1044
1063
  def transpose(include_header: false, header_name: "column", column_names: nil)
@@ -1080,9 +1099,7 @@ module Polars
1080
1099
  # # │ str ┆ i64 │
1081
1100
  # # ╞═════╪═════╡
1082
1101
  # # │ c ┆ 3 │
1083
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
1084
1102
  # # │ b ┆ 2 │
1085
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
1086
1103
  # # │ a ┆ 1 │
1087
1104
  # # └─────┴─────┘
1088
1105
  def reverse
@@ -1113,9 +1130,7 @@ module Polars
1113
1130
  # # │ i64 ┆ i64 ┆ str │
1114
1131
  # # ╞═══════╪═════╪═════╡
1115
1132
  # # │ 1 ┆ 6 ┆ a │
1116
- # # ├╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1117
1133
  # # │ 2 ┆ 7 ┆ b │
1118
- # # ├╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1119
1134
  # # │ 3 ┆ 8 ┆ c │
1120
1135
  # # └───────┴─────┴─────┘
1121
1136
  def rename(mapping)
@@ -1143,9 +1158,7 @@ module Polars
1143
1158
  # # │ i64 ┆ i64 ┆ i64 │
1144
1159
  # # ╞═════╪═════╪═════╡
1145
1160
  # # │ 1 ┆ 97 ┆ 4 │
1146
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1147
1161
  # # │ 2 ┆ 98 ┆ 5 │
1148
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1149
1162
  # # │ 3 ┆ 99 ┆ 6 │
1150
1163
  # # └─────┴─────┴─────┘
1151
1164
  #
@@ -1167,11 +1180,8 @@ module Polars
1167
1180
  # # │ i64 ┆ f64 ┆ bool ┆ f64 │
1168
1181
  # # ╞═════╪══════╪═══════╪══════╡
1169
1182
  # # │ 1 ┆ 0.5 ┆ true ┆ -2.5 │
1170
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌┤
1171
1183
  # # │ 2 ┆ 4.0 ┆ true ┆ 15.0 │
1172
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌┤
1173
1184
  # # │ 3 ┆ 10.0 ┆ false ┆ 20.5 │
1174
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌┤
1175
1185
  # # │ 4 ┆ 13.0 ┆ true ┆ 0.0 │
1176
1186
  # # └─────┴──────┴───────┴──────┘
1177
1187
  def insert_at_idx(index, series)
@@ -1206,7 +1216,6 @@ module Polars
1206
1216
  # # │ i64 ┆ i64 ┆ str │
1207
1217
  # # ╞═════╪═════╪═════╡
1208
1218
  # # │ 1 ┆ 6 ┆ a │
1209
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1210
1219
  # # │ 2 ┆ 7 ┆ b │
1211
1220
  # # └─────┴─────┴─────┘
1212
1221
  #
@@ -1248,17 +1257,11 @@ module Polars
1248
1257
  # # │ str ┆ f64 ┆ f64 ┆ f64 ┆ str ┆ str │
1249
1258
  # # ╞════════════╪══════════╪══════════╪══════════╪══════╪══════╡
1250
1259
  # # │ count ┆ 3.0 ┆ 3.0 ┆ 3.0 ┆ 3 ┆ 3 │
1251
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌┤
1252
1260
  # # │ null_count ┆ 0.0 ┆ 1.0 ┆ 0.0 ┆ 1 ┆ 1 │
1253
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌┤
1254
1261
  # # │ mean ┆ 2.266667 ┆ 4.5 ┆ 0.666667 ┆ null ┆ null │
1255
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌┤
1256
1262
  # # │ std ┆ 1.101514 ┆ 0.707107 ┆ 0.57735 ┆ null ┆ null │
1257
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌┤
1258
1263
  # # │ min ┆ 1.0 ┆ 4.0 ┆ 0.0 ┆ b ┆ eur │
1259
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌┤
1260
1264
  # # │ max ┆ 3.0 ┆ 5.0 ┆ 1.0 ┆ c ┆ usd │
1261
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌┤
1262
1265
  # # │ median ┆ 2.8 ┆ 4.5 ┆ 1.0 ┆ null ┆ null │
1263
1266
  # # └────────────┴──────────┴──────────┴──────────┴──────┴──────┘
1264
1267
  def describe
@@ -1345,9 +1348,7 @@ module Polars
1345
1348
  # # │ i64 ┆ i64 ┆ str │
1346
1349
  # # ╞═══════╪═════╪═════╡
1347
1350
  # # │ 10 ┆ 6 ┆ a │
1348
- # # ├╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1349
1351
  # # │ 20 ┆ 7 ┆ b │
1350
- # # ├╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1351
1352
  # # │ 30 ┆ 8 ┆ c │
1352
1353
  # # └───────┴─────┴─────┘
1353
1354
  def replace_at_idx(index, series)
@@ -1386,9 +1387,7 @@ module Polars
1386
1387
  # # │ i64 ┆ f64 ┆ str │
1387
1388
  # # ╞═════╪═════╪═════╡
1388
1389
  # # │ 3 ┆ 8.0 ┆ c │
1389
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1390
1390
  # # │ 2 ┆ 7.0 ┆ b │
1391
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1392
1391
  # # │ 1 ┆ 6.0 ┆ a │
1393
1392
  # # └─────┴─────┴─────┘
1394
1393
  #
@@ -1405,9 +1404,7 @@ module Polars
1405
1404
  # # │ i64 ┆ f64 ┆ str │
1406
1405
  # # ╞═════╪═════╪═════╡
1407
1406
  # # │ 3 ┆ 8.0 ┆ c │
1408
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1409
1407
  # # │ 2 ┆ 7.0 ┆ b │
1410
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1411
1408
  # # │ 1 ┆ 6.0 ┆ a │
1412
1409
  # # └─────┴─────┴─────┘
1413
1410
  def sort(by, reverse: false, nulls_last: false)
@@ -1473,9 +1470,7 @@ module Polars
1473
1470
  # # │ i64 ┆ i64 │
1474
1471
  # # ╞═════╪═════╡
1475
1472
  # # │ 10 ┆ 4 │
1476
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
1477
1473
  # # │ 20 ┆ 5 │
1478
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
1479
1474
  # # │ 30 ┆ 6 │
1480
1475
  # # └─────┴─────┘
1481
1476
  def replace(column, new_col)
@@ -1510,7 +1505,6 @@ module Polars
1510
1505
  # # │ i64 ┆ f64 ┆ str │
1511
1506
  # # ╞═════╪═════╪═════╡
1512
1507
  # # │ 2 ┆ 7.0 ┆ b │
1513
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1514
1508
  # # │ 3 ┆ 8.0 ┆ c │
1515
1509
  # # └─────┴─────┴─────┘
1516
1510
  def slice(offset, length = nil)
@@ -1542,11 +1536,8 @@ module Polars
1542
1536
  # # │ i64 ┆ str │
1543
1537
  # # ╞═════╪═════╡
1544
1538
  # # │ 1 ┆ a │
1545
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
1546
1539
  # # │ 2 ┆ b │
1547
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
1548
1540
  # # │ 3 ┆ c │
1549
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
1550
1541
  # # │ 4 ┆ d │
1551
1542
  # # └─────┴─────┘
1552
1543
  def limit(n = 5)
@@ -1577,9 +1568,7 @@ module Polars
1577
1568
  # # │ i64 ┆ i64 ┆ str │
1578
1569
  # # ╞═════╪═════╪═════╡
1579
1570
  # # │ 1 ┆ 6 ┆ a │
1580
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1581
1571
  # # │ 2 ┆ 7 ┆ b │
1582
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1583
1572
  # # │ 3 ┆ 8 ┆ c │
1584
1573
  # # └─────┴─────┴─────┘
1585
1574
  def head(n = 5)
@@ -1610,9 +1599,7 @@ module Polars
1610
1599
  # # │ i64 ┆ i64 ┆ str │
1611
1600
  # # ╞═════╪═════╪═════╡
1612
1601
  # # │ 3 ┆ 8 ┆ c │
1613
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1614
1602
  # # │ 4 ┆ 9 ┆ d │
1615
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1616
1603
  # # │ 5 ┆ 10 ┆ e │
1617
1604
  # # └─────┴─────┴─────┘
1618
1605
  def tail(n = 5)
@@ -1643,7 +1630,6 @@ module Polars
1643
1630
  # # │ i64 ┆ i64 ┆ str │
1644
1631
  # # ╞═════╪═════╪═════╡
1645
1632
  # # │ 1 ┆ 6 ┆ a │
1646
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1647
1633
  # # │ 3 ┆ 8 ┆ c │
1648
1634
  # # └─────┴─────┴─────┘
1649
1635
  def drop_nulls(subset: nil)
@@ -1685,11 +1671,8 @@ module Polars
1685
1671
  # # │ i64 ┆ i64 │
1686
1672
  # # ╞═════╪═════╡
1687
1673
  # # │ 1 ┆ 10 │
1688
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
1689
1674
  # # │ 2 ┆ 20 │
1690
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
1691
1675
  # # │ 3 ┆ 30 │
1692
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
1693
1676
  # # │ 4 ┆ 40 │
1694
1677
  # # └─────┴─────┘
1695
1678
  def pipe(func, *args, **kwargs, &block)
@@ -1721,9 +1704,7 @@ module Polars
1721
1704
  # # │ u32 ┆ i64 ┆ i64 │
1722
1705
  # # ╞════════╪═════╪═════╡
1723
1706
  # # │ 0 ┆ 1 ┆ 2 │
1724
- # # ├╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1725
1707
  # # │ 1 ┆ 3 ┆ 4 │
1726
- # # ├╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
1727
1708
  # # │ 2 ┆ 5 ┆ 6 │
1728
1709
  # # └────────┴─────┴─────┘
1729
1710
  def with_row_count(name: "row_nr", offset: 0)
@@ -1758,18 +1739,13 @@ module Polars
1758
1739
  # # │ str ┆ i64 │
1759
1740
  # # ╞═════╪═════╡
1760
1741
  # # │ a ┆ 4 │
1761
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
1762
1742
  # # │ b ┆ 11 │
1763
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
1764
1743
  # # │ c ┆ 6 │
1765
1744
  # # └─────┴─────┘
1766
1745
  def groupby(by, maintain_order: false)
1767
1746
  if !Utils.bool?(maintain_order)
1768
1747
  raise TypeError, "invalid input for groupby arg `maintain_order`: #{maintain_order}."
1769
1748
  end
1770
- if by.is_a?(String)
1771
- by = [by]
1772
- end
1773
1749
  GroupBy.new(
1774
1750
  _df,
1775
1751
  by,
@@ -1856,15 +1832,10 @@ module Polars
1856
1832
  # # │ datetime[μs] ┆ i64 ┆ i64 ┆ i64 │
1857
1833
  # # ╞═════════════════════╪═══════╪═══════╪═══════╡
1858
1834
  # # │ 2020-01-01 13:45:48 ┆ 3 ┆ 3 ┆ 3 │
1859
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
1860
1835
  # # │ 2020-01-01 16:42:13 ┆ 10 ┆ 3 ┆ 7 │
1861
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
1862
1836
  # # │ 2020-01-01 16:45:09 ┆ 15 ┆ 3 ┆ 7 │
1863
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
1864
1837
  # # │ 2020-01-02 18:12:48 ┆ 24 ┆ 3 ┆ 9 │
1865
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
1866
1838
  # # │ 2020-01-03 19:45:32 ┆ 11 ┆ 2 ┆ 9 │
1867
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
1868
1839
  # # │ 2020-01-08 23:16:43 ┆ 1 ┆ 1 ┆ 1 │
1869
1840
  # # └─────────────────────┴───────┴───────┴───────┘
1870
1841
  def groupby_rolling(
@@ -1961,17 +1932,11 @@ module Polars
1961
1932
  # # │ datetime[μs] ┆ i64 │
1962
1933
  # # ╞═════════════════════╪═════╡
1963
1934
  # # │ 2021-12-16 00:00:00 ┆ 0 │
1964
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┤
1965
1935
  # # │ 2021-12-16 00:30:00 ┆ 1 │
1966
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┤
1967
1936
  # # │ 2021-12-16 01:00:00 ┆ 2 │
1968
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┤
1969
1937
  # # │ 2021-12-16 01:30:00 ┆ 3 │
1970
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┤
1971
1938
  # # │ 2021-12-16 02:00:00 ┆ 4 │
1972
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┤
1973
1939
  # # │ 2021-12-16 02:30:00 ┆ 5 │
1974
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┤
1975
1940
  # # │ 2021-12-16 03:00:00 ┆ 6 │
1976
1941
  # # └─────────────────────┴─────┘
1977
1942
  #
@@ -1990,11 +1955,8 @@ module Polars
1990
1955
  # # │ datetime[μs] ┆ datetime[μs] ┆ datetime[μs] │
1991
1956
  # # ╞═════════════════════╪═════════════════════╪═════════════════════╡
1992
1957
  # # │ 2021-12-15 23:00:00 ┆ 2021-12-16 00:00:00 ┆ 2021-12-16 00:00:00 │
1993
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
1994
1958
  # # │ 2021-12-16 00:00:00 ┆ 2021-12-16 00:30:00 ┆ 2021-12-16 01:00:00 │
1995
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
1996
1959
  # # │ 2021-12-16 01:00:00 ┆ 2021-12-16 01:30:00 ┆ 2021-12-16 02:00:00 │
1997
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
1998
1960
  # # │ 2021-12-16 02:00:00 ┆ 2021-12-16 02:30:00 ┆ 2021-12-16 03:00:00 │
1999
1961
  # # └─────────────────────┴─────────────────────┴─────────────────────┘
2000
1962
  #
@@ -2010,11 +1972,8 @@ module Polars
2010
1972
  # # │ datetime[μs] ┆ datetime[μs] ┆ datetime[μs] ┆ u32 │
2011
1973
  # # ╞═════════════════════╪═════════════════════╪═════════════════════╪════════════╡
2012
1974
  # # │ 2021-12-15 23:00:00 ┆ 2021-12-16 00:00:00 ┆ 2021-12-15 23:00:00 ┆ 1 │
2013
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
2014
1975
  # # │ 2021-12-16 00:00:00 ┆ 2021-12-16 01:00:00 ┆ 2021-12-16 00:00:00 ┆ 2 │
2015
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
2016
1976
  # # │ 2021-12-16 01:00:00 ┆ 2021-12-16 02:00:00 ┆ 2021-12-16 01:00:00 ┆ 2 │
2017
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
2018
1977
  # # │ 2021-12-16 02:00:00 ┆ 2021-12-16 03:00:00 ┆ 2021-12-16 02:00:00 ┆ 2 │
2019
1978
  # # └─────────────────────┴─────────────────────┴─────────────────────┴────────────┘
2020
1979
  #
@@ -2033,11 +1992,8 @@ module Polars
2033
1992
  # # │ datetime[μs] ┆ u32 ┆ list[datetime[μs]] │
2034
1993
  # # ╞═════════════════════╪════════════╪═════════════════════════════════════╡
2035
1994
  # # │ 2021-12-16 00:00:00 ┆ 2 ┆ [2021-12-16 00:00:00, 2021-12-16... │
2036
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
2037
1995
  # # │ 2021-12-16 01:00:00 ┆ 2 ┆ [2021-12-16 01:00:00, 2021-12-16... │
2038
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
2039
1996
  # # │ 2021-12-16 02:00:00 ┆ 2 ┆ [2021-12-16 02:00:00, 2021-12-16... │
2040
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
2041
1997
  # # │ 2021-12-16 03:00:00 ┆ 1 ┆ [2021-12-16 03:00:00] │
2042
1998
  # # └─────────────────────┴────────────┴─────────────────────────────────────┘
2043
1999
  #
@@ -2053,13 +2009,9 @@ module Polars
2053
2009
  # # │ datetime[μs] ┆ u32 │
2054
2010
  # # ╞═════════════════════╪════════════╡
2055
2011
  # # │ 2021-12-15 23:00:00 ┆ 1 │
2056
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
2057
2012
  # # │ 2021-12-16 00:00:00 ┆ 3 │
2058
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
2059
2013
  # # │ 2021-12-16 01:00:00 ┆ 3 │
2060
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
2061
2014
  # # │ 2021-12-16 02:00:00 ┆ 3 │
2062
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
2063
2015
  # # │ 2021-12-16 03:00:00 ┆ 1 │
2064
2016
  # # └─────────────────────┴────────────┘
2065
2017
  #
@@ -2089,17 +2041,11 @@ module Polars
2089
2041
  # # │ str ┆ datetime[μs] ┆ datetime[μs] ┆ datetime[μs] ┆ u32 │
2090
2042
  # # ╞════════╪═════════════════════╪═════════════════════╪═════════════════════╪════════════╡
2091
2043
  # # │ a ┆ 2021-12-15 23:00:00 ┆ 2021-12-16 00:00:00 ┆ 2021-12-15 23:00:00 ┆ 1 │
2092
- # # ├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
2093
2044
  # # │ a ┆ 2021-12-16 00:00:00 ┆ 2021-12-16 01:00:00 ┆ 2021-12-16 00:00:00 ┆ 3 │
2094
- # # ├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
2095
2045
  # # │ a ┆ 2021-12-16 01:00:00 ┆ 2021-12-16 02:00:00 ┆ 2021-12-16 01:00:00 ┆ 1 │
2096
- # # ├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
2097
2046
  # # │ a ┆ 2021-12-16 02:00:00 ┆ 2021-12-16 03:00:00 ┆ 2021-12-16 02:00:00 ┆ 2 │
2098
- # # ├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
2099
2047
  # # │ a ┆ 2021-12-16 03:00:00 ┆ 2021-12-16 04:00:00 ┆ 2021-12-16 03:00:00 ┆ 1 │
2100
- # # ├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
2101
2048
  # # │ b ┆ 2021-12-16 01:00:00 ┆ 2021-12-16 02:00:00 ┆ 2021-12-16 01:00:00 ┆ 2 │
2102
- # # ├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┤
2103
2049
  # # │ b ┆ 2021-12-16 02:00:00 ┆ 2021-12-16 03:00:00 ┆ 2021-12-16 02:00:00 ┆ 1 │
2104
2050
  # # └────────┴─────────────────────┴─────────────────────┴─────────────────────┴────────────┘
2105
2051
  #
@@ -2125,9 +2071,7 @@ module Polars
2125
2071
  # # │ i64 ┆ i64 ┆ i64 ┆ list[str] │
2126
2072
  # # ╞═════════════════╪═════════════════╪═════╪═════════════════╡
2127
2073
  # # │ 0 ┆ 3 ┆ 0 ┆ ["A", "B", "B"] │
2128
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
2129
2074
  # # │ 2 ┆ 5 ┆ 2 ┆ ["B", "B", "C"] │
2130
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┤
2131
2075
  # # │ 4 ┆ 7 ┆ 4 ┆ ["C"] │
2132
2076
  # # └─────────────────┴─────────────────┴─────┴─────────────────┘
2133
2077
  def groupby_dynamic(
@@ -2213,17 +2157,11 @@ module Polars
2213
2157
  # # │ datetime[ns] ┆ str ┆ i64 │
2214
2158
  # # ╞═════════════════════╪════════╪════════╡
2215
2159
  # # │ 2021-02-01 00:00:00 ┆ A ┆ 0 │
2216
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
2217
2160
  # # │ 2021-03-01 00:00:00 ┆ A ┆ 0 │
2218
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
2219
2161
  # # │ 2021-04-01 00:00:00 ┆ A ┆ 0 │
2220
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
2221
2162
  # # │ 2021-05-01 00:00:00 ┆ A ┆ 2 │
2222
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
2223
2163
  # # │ 2021-04-01 00:00:00 ┆ B ┆ 1 │
2224
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
2225
2164
  # # │ 2021-05-01 00:00:00 ┆ B ┆ 1 │
2226
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
2227
2165
  # # │ 2021-06-01 00:00:00 ┆ B ┆ 3 │
2228
2166
  # # └─────────────────────┴────────┴────────┘
2229
2167
  def upsample(
@@ -2348,11 +2286,8 @@ module Polars
2348
2286
  # # │ datetime[ns] ┆ f64 ┆ i64 │
2349
2287
  # # ╞═════════════════════╪════════════╪══════╡
2350
2288
  # # │ 2016-05-12 00:00:00 ┆ 82.19 ┆ 4164 │
2351
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┤
2352
2289
  # # │ 2017-05-12 00:00:00 ┆ 82.66 ┆ 4411 │
2353
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┤
2354
2290
  # # │ 2018-05-12 00:00:00 ┆ 83.12 ┆ 4566 │
2355
- # # ├╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌┤
2356
2291
  # # │ 2019-05-12 00:00:00 ┆ 83.52 ┆ 4696 │
2357
2292
  # # └─────────────────────┴────────────┴──────┘
2358
2293
  def join_asof(
@@ -2427,7 +2362,6 @@ module Polars
2427
2362
  # # │ i64 ┆ f64 ┆ str ┆ str │
2428
2363
  # # ╞═════╪═════╪═════╪═══════╡
2429
2364
  # # │ 1 ┆ 6.0 ┆ a ┆ x │
2430
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌┤
2431
2365
  # # │ 2 ┆ 7.0 ┆ b ┆ y │
2432
2366
  # # └─────┴─────┴─────┴───────┘
2433
2367
  #
@@ -2441,11 +2375,8 @@ module Polars
2441
2375
  # # │ i64 ┆ f64 ┆ str ┆ str │
2442
2376
  # # ╞══════╪══════╪═════╪═══════╡
2443
2377
  # # │ 1 ┆ 6.0 ┆ a ┆ x │
2444
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌┤
2445
2378
  # # │ 2 ┆ 7.0 ┆ b ┆ y │
2446
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌┤
2447
2379
  # # │ null ┆ null ┆ d ┆ z │
2448
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌┤
2449
2380
  # # │ 3 ┆ 8.0 ┆ c ┆ null │
2450
2381
  # # └──────┴──────┴─────┴───────┘
2451
2382
  #
@@ -2459,9 +2390,7 @@ module Polars
2459
2390
  # # │ i64 ┆ f64 ┆ str ┆ str │
2460
2391
  # # ╞═════╪═════╪═════╪═══════╡
2461
2392
  # # │ 1 ┆ 6.0 ┆ a ┆ x │
2462
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌┤
2463
2393
  # # │ 2 ┆ 7.0 ┆ b ┆ y │
2464
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌┤
2465
2394
  # # │ 3 ┆ 8.0 ┆ c ┆ null │
2466
2395
  # # └─────┴─────┴─────┴───────┘
2467
2396
  #
@@ -2475,7 +2404,6 @@ module Polars
2475
2404
  # # │ i64 ┆ f64 ┆ str │
2476
2405
  # # ╞═════╪═════╪═════╡
2477
2406
  # # │ 1 ┆ 6.0 ┆ a │
2478
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
2479
2407
  # # │ 2 ┆ 7.0 ┆ b │
2480
2408
  # # └─────┴─────┴─────┘
2481
2409
  #
@@ -2546,9 +2474,7 @@ module Polars
2546
2474
  # # │ i64 ┆ i64 │
2547
2475
  # # ╞══════════╪══════════╡
2548
2476
  # # │ 2 ┆ -3 │
2549
- # # ├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
2550
2477
  # # │ 4 ┆ 15 │
2551
- # # ├╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┤
2552
2478
  # # │ 6 ┆ 24 │
2553
2479
  # # └──────────┴──────────┘
2554
2480
  #
@@ -2562,9 +2488,7 @@ module Polars
2562
2488
  # # │ i64 │
2563
2489
  # # ╞═══════╡
2564
2490
  # # │ 1 │
2565
- # # ├╌╌╌╌╌╌╌┤
2566
2491
  # # │ 9 │
2567
- # # ├╌╌╌╌╌╌╌┤
2568
2492
  # # │ 14 │
2569
2493
  # # └───────┘
2570
2494
  def apply(return_dtype: nil, inference_size: 256, &f)
@@ -2599,9 +2523,7 @@ module Polars
2599
2523
  # # │ i64 ┆ i64 ┆ f64 │
2600
2524
  # # ╞═════╪═════╪═══════════╡
2601
2525
  # # │ 1 ┆ 2 ┆ 4.0 │
2602
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
2603
2526
  # # │ 3 ┆ 4 ┆ 16.0 │
2604
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┤
2605
2527
  # # │ 5 ┆ 6 ┆ 36.0 │
2606
2528
  # # └─────┴─────┴───────────┘
2607
2529
  #
@@ -2615,9 +2537,7 @@ module Polars
2615
2537
  # # │ f64 ┆ i64 │
2616
2538
  # # ╞══════╪═════╡
2617
2539
  # # │ 1.0 ┆ 2 │
2618
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌┤
2619
2540
  # # │ 9.0 ┆ 4 │
2620
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌┤
2621
2541
  # # │ 25.0 ┆ 6 │
2622
2542
  # # └──────┴─────┘
2623
2543
  def with_column(column)
@@ -2653,9 +2573,7 @@ module Polars
2653
2573
  # # │ i64 ┆ i64 ┆ str ┆ i64 │
2654
2574
  # # ╞═════╪═════╪═════╪═══════╡
2655
2575
  # # │ 1 ┆ 6 ┆ a ┆ 10 │
2656
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌┤
2657
2576
  # # │ 2 ┆ 7 ┆ b ┆ 20 │
2658
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌┤
2659
2577
  # # │ 3 ┆ 8 ┆ c ┆ 30 │
2660
2578
  # # └─────┴─────┴─────┴───────┘
2661
2579
  def hstack(columns, in_place: false)
@@ -2703,11 +2621,8 @@ module Polars
2703
2621
  # # │ i64 ┆ i64 ┆ str │
2704
2622
  # # ╞═════╪═════╪═════╡
2705
2623
  # # │ 1 ┆ 6 ┆ a │
2706
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
2707
2624
  # # │ 2 ┆ 7 ┆ b │
2708
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
2709
2625
  # # │ 3 ┆ 8 ┆ c │
2710
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
2711
2626
  # # │ 4 ┆ 9 ┆ d │
2712
2627
  # # └─────┴─────┴─────┘
2713
2628
  def vstack(df, in_place: false)
@@ -2753,15 +2668,10 @@ module Polars
2753
2668
  # # │ i64 ┆ i64 │
2754
2669
  # # ╞═════╪═════╡
2755
2670
  # # │ 1 ┆ 4 │
2756
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
2757
2671
  # # │ 2 ┆ 5 │
2758
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
2759
2672
  # # │ 3 ┆ 6 │
2760
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
2761
2673
  # # │ 10 ┆ 40 │
2762
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
2763
2674
  # # │ 20 ┆ 50 │
2764
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
2765
2675
  # # │ 30 ┆ 60 │
2766
2676
  # # └─────┴─────┘
2767
2677
  def extend(other)
@@ -2793,9 +2703,7 @@ module Polars
2793
2703
  # # │ i64 ┆ f64 │
2794
2704
  # # ╞═════╪═════╡
2795
2705
  # # │ 1 ┆ 6.0 │
2796
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
2797
2706
  # # │ 2 ┆ 7.0 │
2798
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
2799
2707
  # # │ 3 ┆ 8.0 │
2800
2708
  # # └─────┴─────┘
2801
2709
  def drop(columns)
@@ -2926,11 +2834,8 @@ module Polars
2926
2834
  # # │ i64 ┆ f64 │
2927
2835
  # # ╞═════╪══════╡
2928
2836
  # # │ 1 ┆ 0.5 │
2929
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┤
2930
2837
  # # │ 2 ┆ 4.0 │
2931
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┤
2932
2838
  # # │ 99 ┆ 99.0 │
2933
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┤
2934
2839
  # # │ 4 ┆ 13.0 │
2935
2840
  # # └─────┴──────┘
2936
2841
  #
@@ -2944,11 +2849,8 @@ module Polars
2944
2849
  # # │ i64 ┆ f64 │
2945
2850
  # # ╞═════╪══════╡
2946
2851
  # # │ 1 ┆ 0.5 │
2947
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┤
2948
2852
  # # │ 2 ┆ 4.0 │
2949
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┤
2950
2853
  # # │ 2 ┆ 4.0 │
2951
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┤
2952
2854
  # # │ 4 ┆ 13.0 │
2953
2855
  # # └─────┴──────┘
2954
2856
  #
@@ -2962,11 +2864,8 @@ module Polars
2962
2864
  # # │ i64 ┆ f64 │
2963
2865
  # # ╞═════╪══════╡
2964
2866
  # # │ 1 ┆ 0.5 │
2965
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┤
2966
2867
  # # │ 2 ┆ 4.0 │
2967
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┤
2968
2868
  # # │ 4 ┆ 13.0 │
2969
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┤
2970
2869
  # # │ 4 ┆ 13.0 │
2971
2870
  # # └─────┴──────┘
2972
2871
  #
@@ -2980,11 +2879,8 @@ module Polars
2980
2879
  # # │ i64 ┆ f64 │
2981
2880
  # # ╞═════╪══════╡
2982
2881
  # # │ 1 ┆ 0.5 │
2983
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┤
2984
2882
  # # │ 2 ┆ 4.0 │
2985
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┤
2986
2883
  # # │ 0 ┆ 0.0 │
2987
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┤
2988
2884
  # # │ 4 ┆ 13.0 │
2989
2885
  # # └─────┴──────┘
2990
2886
  def fill_null(value = nil, strategy: nil, limit: nil, matches_supertype: true)
@@ -3023,11 +2919,8 @@ module Polars
3023
2919
  # # │ f64 ┆ f64 │
3024
2920
  # # ╞══════╪══════╡
3025
2921
  # # │ 1.5 ┆ 0.5 │
3026
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┤
3027
2922
  # # │ 2.0 ┆ 4.0 │
3028
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┤
3029
2923
  # # │ 99.0 ┆ 99.0 │
3030
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┤
3031
2924
  # # │ 4.0 ┆ 13.0 │
3032
2925
  # # └──────┴──────┘
3033
2926
  def fill_nan(fill_value)
@@ -3057,19 +2950,12 @@ module Polars
3057
2950
  # # │ str ┆ i64 │
3058
2951
  # # ╞═════════╪═════════╡
3059
2952
  # # │ a ┆ 1 │
3060
- # # ├╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
3061
2953
  # # │ a ┆ 2 │
3062
- # # ├╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
3063
2954
  # # │ a ┆ 3 │
3064
- # # ├╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
3065
2955
  # # │ b ┆ 4 │
3066
- # # ├╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
3067
2956
  # # │ b ┆ 5 │
3068
- # # ├╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
3069
2957
  # # │ c ┆ 6 │
3070
- # # ├╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
3071
2958
  # # │ c ┆ 7 │
3072
- # # ├╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌┤
3073
2959
  # # │ c ┆ 8 │
3074
2960
  # # └─────────┴─────────┘
3075
2961
  def explode(columns)
@@ -3111,7 +2997,6 @@ module Polars
3111
2997
  # # │ str ┆ i64 ┆ i64 ┆ i64 │
3112
2998
  # # ╞═════╪═════╪═════╪═════╡
3113
2999
  # # │ one ┆ 1 ┆ 2 ┆ 3 │
3114
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
3115
3000
  # # │ two ┆ 4 ┆ 5 ┆ 6 │
3116
3001
  # # └─────┴─────┴─────┴─────┘
3117
3002
  def pivot(
@@ -3120,7 +3005,8 @@ module Polars
3120
3005
  columns:,
3121
3006
  aggregate_fn: "first",
3122
3007
  maintain_order: true,
3123
- sort_columns: false
3008
+ sort_columns: false,
3009
+ separator: "_"
3124
3010
  )
3125
3011
  if values.is_a?(String)
3126
3012
  values = [values]
@@ -3162,7 +3048,8 @@ module Polars
3162
3048
  columns,
3163
3049
  aggregate_fn._rbexpr,
3164
3050
  maintain_order,
3165
- sort_columns
3051
+ sort_columns,
3052
+ separator
3166
3053
  )
3167
3054
  )
3168
3055
  end
@@ -3205,15 +3092,10 @@ module Polars
3205
3092
  # # │ str ┆ str ┆ i64 │
3206
3093
  # # ╞═════╪══════════╪═══════╡
3207
3094
  # # │ x ┆ b ┆ 1 │
3208
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
3209
3095
  # # │ y ┆ b ┆ 3 │
3210
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
3211
3096
  # # │ z ┆ b ┆ 5 │
3212
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
3213
3097
  # # │ x ┆ c ┆ 2 │
3214
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
3215
3098
  # # │ y ┆ c ┆ 4 │
3216
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
3217
3099
  # # │ z ┆ c ┆ 6 │
3218
3100
  # # └─────┴──────────┴───────┘
3219
3101
  def melt(id_vars: nil, value_vars: nil, variable_name: nil, value_name: nil)
@@ -3268,21 +3150,13 @@ module Polars
3268
3150
  # # │ str ┆ i64 │
3269
3151
  # # ╞══════╪══════╡
3270
3152
  # # │ A ┆ 0 │
3271
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┤
3272
3153
  # # │ B ┆ 1 │
3273
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┤
3274
3154
  # # │ C ┆ 2 │
3275
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┤
3276
3155
  # # │ D ┆ 3 │
3277
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┤
3278
3156
  # # │ ... ┆ ... │
3279
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┤
3280
3157
  # # │ F ┆ 5 │
3281
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┤
3282
3158
  # # │ G ┆ 6 │
3283
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┤
3284
3159
  # # │ H ┆ 7 │
3285
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┤
3286
3160
  # # │ I ┆ 8 │
3287
3161
  # # └──────┴──────┘
3288
3162
  #
@@ -3296,9 +3170,7 @@ module Polars
3296
3170
  # # │ str ┆ str ┆ str ┆ i64 ┆ i64 ┆ i64 │
3297
3171
  # # ╞════════╪════════╪════════╪════════╪════════╪════════╡
3298
3172
  # # │ A ┆ D ┆ G ┆ 0 ┆ 3 ┆ 6 │
3299
- # # ├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
3300
3173
  # # │ B ┆ E ┆ H ┆ 1 ┆ 4 ┆ 7 │
3301
- # # ├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
3302
3174
  # # │ C ┆ F ┆ I ┆ 2 ┆ 5 ┆ 8 │
3303
3175
  # # └────────┴────────┴────────┴────────┴────────┴────────┘
3304
3176
  #
@@ -3312,9 +3184,7 @@ module Polars
3312
3184
  # # │ str ┆ str ┆ str ┆ i64 ┆ i64 ┆ i64 │
3313
3185
  # # ╞════════╪════════╪════════╪════════╪════════╪════════╡
3314
3186
  # # │ A ┆ B ┆ C ┆ 0 ┆ 1 ┆ 2 │
3315
- # # ├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
3316
3187
  # # │ D ┆ E ┆ F ┆ 3 ┆ 4 ┆ 5 │
3317
- # # ├╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌┤
3318
3188
  # # │ G ┆ H ┆ I ┆ 6 ┆ 7 ┆ 8 │
3319
3189
  # # └────────┴────────┴────────┴────────┴────────┴────────┘
3320
3190
  def unstack(step:, how: "vertical", columns: nil, fill_values: nil)
@@ -3400,7 +3270,6 @@ module Polars
3400
3270
  # # │ str ┆ i64 ┆ str │
3401
3271
  # # ╞═════╪═════╪═════╡
3402
3272
  # # │ A ┆ 1 ┆ k │
3403
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
3404
3273
  # # │ A ┆ 2 ┆ l │
3405
3274
  # # └─────┴─────┴─────┘, shape: (2, 3)
3406
3275
  # # ┌─────┬─────┬─────┐
@@ -3409,7 +3278,6 @@ module Polars
3409
3278
  # # │ str ┆ i64 ┆ str │
3410
3279
  # # ╞═════╪═════╪═════╡
3411
3280
  # # │ B ┆ 2 ┆ m │
3412
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
3413
3281
  # # │ B ┆ 4 ┆ m │
3414
3282
  # # └─────┴─────┴─────┘, shape: (1, 3)
3415
3283
  # # ┌─────┬─────┬─────┐
@@ -3430,7 +3298,6 @@ module Polars
3430
3298
  # # │ str ┆ i64 ┆ str │
3431
3299
  # # ╞═════╪═════╪═════╡
3432
3300
  # # │ A ┆ 1 ┆ k │
3433
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
3434
3301
  # # │ A ┆ 2 ┆ l │
3435
3302
  # # └─────┴─────┴─────┘, "B"=>shape: (2, 3)
3436
3303
  # # ┌─────┬─────┬─────┐
@@ -3439,7 +3306,6 @@ module Polars
3439
3306
  # # │ str ┆ i64 ┆ str │
3440
3307
  # # ╞═════╪═════╪═════╡
3441
3308
  # # │ B ┆ 2 ┆ m │
3442
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
3443
3309
  # # │ B ┆ 4 ┆ m │
3444
3310
  # # └─────┴─────┴─────┘, "C"=>shape: (1, 3)
3445
3311
  # # ┌─────┬─────┬─────┐
@@ -3499,9 +3365,7 @@ module Polars
3499
3365
  # # │ i64 ┆ i64 ┆ str │
3500
3366
  # # ╞══════╪══════╪══════╡
3501
3367
  # # │ null ┆ null ┆ null │
3502
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌┤
3503
3368
  # # │ 1 ┆ 6 ┆ a │
3504
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌┤
3505
3369
  # # │ 2 ┆ 7 ┆ b │
3506
3370
  # # └──────┴──────┴──────┘
3507
3371
  #
@@ -3515,9 +3379,7 @@ module Polars
3515
3379
  # # │ i64 ┆ i64 ┆ str │
3516
3380
  # # ╞══════╪══════╪══════╡
3517
3381
  # # │ 2 ┆ 7 ┆ b │
3518
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌┤
3519
3382
  # # │ 3 ┆ 8 ┆ c │
3520
- # # ├╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌┤
3521
3383
  # # │ null ┆ null ┆ null │
3522
3384
  # # └──────┴──────┴──────┘
3523
3385
  def shift(periods)
@@ -3550,9 +3412,7 @@ module Polars
3550
3412
  # # │ i64 ┆ i64 ┆ str │
3551
3413
  # # ╞═════╪═════╪═════╡
3552
3414
  # # │ 0 ┆ 0 ┆ 0 │
3553
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
3554
3415
  # # │ 1 ┆ 6 ┆ a │
3555
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
3556
3416
  # # │ 2 ┆ 7 ┆ b │
3557
3417
  # # └─────┴─────┴─────┘
3558
3418
  def shift_and_fill(periods, fill_value)
@@ -3642,9 +3502,7 @@ module Polars
3642
3502
  # # │ i64 │
3643
3503
  # # ╞═════╡
3644
3504
  # # │ 1 │
3645
- # # ├╌╌╌╌╌┤
3646
3505
  # # │ 2 │
3647
- # # ├╌╌╌╌╌┤
3648
3506
  # # │ 3 │
3649
3507
  # # └─────┘
3650
3508
  #
@@ -3658,9 +3516,7 @@ module Polars
3658
3516
  # # │ i64 ┆ i64 │
3659
3517
  # # ╞═════╪═════╡
3660
3518
  # # │ 1 ┆ 6 │
3661
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
3662
3519
  # # │ 2 ┆ 7 │
3663
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
3664
3520
  # # │ 3 ┆ 8 │
3665
3521
  # # └─────┴─────┘
3666
3522
  #
@@ -3674,9 +3530,7 @@ module Polars
3674
3530
  # # │ i64 │
3675
3531
  # # ╞═════╡
3676
3532
  # # │ 2 │
3677
- # # ├╌╌╌╌╌┤
3678
3533
  # # │ 3 │
3679
- # # ├╌╌╌╌╌┤
3680
3534
  # # │ 4 │
3681
3535
  # # └─────┘
3682
3536
  #
@@ -3690,9 +3544,7 @@ module Polars
3690
3544
  # # │ i64 ┆ i64 │
3691
3545
  # # ╞═════╪═════╡
3692
3546
  # # │ 2 ┆ 7 │
3693
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
3694
3547
  # # │ 3 ┆ 8 │
3695
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
3696
3548
  # # │ 4 ┆ 9 │
3697
3549
  # # └─────┴─────┘
3698
3550
  #
@@ -3706,9 +3558,7 @@ module Polars
3706
3558
  # # │ i64 │
3707
3559
  # # ╞═════════╡
3708
3560
  # # │ 0 │
3709
- # # ├╌╌╌╌╌╌╌╌╌┤
3710
3561
  # # │ 0 │
3711
- # # ├╌╌╌╌╌╌╌╌╌┤
3712
3562
  # # │ 10 │
3713
3563
  # # └─────────┘
3714
3564
  def select(exprs)
@@ -3750,11 +3600,8 @@ module Polars
3750
3600
  # # │ i64 ┆ f64 ┆ bool ┆ f64 ┆ f64 ┆ bool │
3751
3601
  # # ╞═════╪══════╪═══════╪══════╪══════╪═══════╡
3752
3602
  # # │ 1 ┆ 0.5 ┆ true ┆ 1.0 ┆ 0.25 ┆ false │
3753
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
3754
3603
  # # │ 2 ┆ 4.0 ┆ true ┆ 4.0 ┆ 2.0 ┆ false │
3755
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
3756
3604
  # # │ 3 ┆ 10.0 ┆ false ┆ 9.0 ┆ 5.0 ┆ true │
3757
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
3758
3605
  # # │ 4 ┆ 13.0 ┆ true ┆ 16.0 ┆ 6.5 ┆ false │
3759
3606
  # # └─────┴──────┴───────┴──────┴──────┴───────┘
3760
3607
  def with_columns(exprs)
@@ -4137,14 +3984,13 @@ module Polars
4137
3984
  # # │ u8 ┆ u8 ┆ u8 ┆ u8 ┆ u8 ┆ u8 │
4138
3985
  # # ╞═══════╪═══════╪═══════╪═══════╪═══════╪═══════╡
4139
3986
  # # │ 1 ┆ 0 ┆ 1 ┆ 0 ┆ 1 ┆ 0 │
4140
- # # ├╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
4141
3987
  # # │ 0 ┆ 1 ┆ 0 ┆ 1 ┆ 0 ┆ 1 │
4142
3988
  # # └───────┴───────┴───────┴───────┴───────┴───────┘
4143
- def to_dummies(columns: nil)
3989
+ def to_dummies(columns: nil, separator: "_")
4144
3990
  if columns.is_a?(String)
4145
3991
  columns = [columns]
4146
3992
  end
4147
- _from_rbdf(_df.to_dummies(columns))
3993
+ _from_rbdf(_df.to_dummies(columns, separator))
4148
3994
  end
4149
3995
 
4150
3996
  # Drop duplicate rows from this DataFrame.
@@ -4180,13 +4026,9 @@ module Polars
4180
4026
  # # │ i64 ┆ f64 ┆ bool │
4181
4027
  # # ╞═════╪═════╪═══════╡
4182
4028
  # # │ 1 ┆ 0.5 ┆ true │
4183
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌┤
4184
4029
  # # │ 2 ┆ 1.0 ┆ true │
4185
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌┤
4186
4030
  # # │ 3 ┆ 2.0 ┆ false │
4187
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌┤
4188
4031
  # # │ 4 ┆ 3.0 ┆ true │
4189
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌╌┤
4190
4032
  # # │ 5 ┆ 3.0 ┆ true │
4191
4033
  # # └─────┴─────┴───────┘
4192
4034
  def unique(maintain_order: true, subset: nil, keep: "first")
@@ -4320,7 +4162,6 @@ module Polars
4320
4162
  # # │ i64 ┆ i64 ┆ str │
4321
4163
  # # ╞═════╪═════╪═════╡
4322
4164
  # # │ 3 ┆ 8 ┆ c │
4323
- # # ├╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┤
4324
4165
  # # │ 2 ┆ 7 ┆ b │
4325
4166
  # # └─────┴─────┴─────┘
4326
4167
  def sample(
@@ -4440,6 +4281,10 @@ module Polars
4440
4281
  # Row index.
4441
4282
  # @param by_predicate [Object]
4442
4283
  # Select the row according to a given expression/predicate.
4284
+ # @param named [Boolean]
4285
+ # Return a hash instead of an array. The hash is a mapping of
4286
+ # column name to row value. This is more expensive than returning an
4287
+ # array, but allows for accessing values by column name.
4443
4288
  #
4444
4289
  # @return [Object]
4445
4290
  #
@@ -4462,25 +4307,44 @@ module Polars
4462
4307
  # df.row(2)
4463
4308
  # # => [3, 8, "c"]
4464
4309
  #
4310
+ # @example Get a hash instead with a mapping of column names to row values
4311
+ # df.row(2, named: true)
4312
+ # # => {"foo"=>3, "bar"=>8, "ham"=>"c"}
4313
+ #
4465
4314
  # @example Return the row that matches the given predicate
4466
4315
  # df.row(by_predicate: Polars.col("ham") == "b")
4467
4316
  # # => [2, 7, "b"]
4468
- def row(index = nil, by_predicate: nil)
4317
+ def row(index = nil, by_predicate: nil, named: false)
4469
4318
  if !index.nil? && !by_predicate.nil?
4470
4319
  raise ArgumentError, "Cannot set both 'index' and 'by_predicate'; mutually exclusive"
4471
4320
  elsif index.is_a?(Expr)
4472
4321
  raise TypeError, "Expressions should be passed to the 'by_predicate' param"
4473
- elsif index.is_a?(Integer)
4474
- _df.row_tuple(index)
4475
- elsif by_predicate.is_a?(Expr)
4322
+ end
4323
+
4324
+ if !index.nil?
4325
+ row = _df.row_tuple(index)
4326
+ if named
4327
+ columns.zip(row).to_h
4328
+ else
4329
+ row
4330
+ end
4331
+ elsif !by_predicate.nil?
4332
+ if !by_predicate.is_a?(Expr)
4333
+ raise TypeError, "Expected by_predicate to be an expression; found #{by_predicate.class.name}"
4334
+ end
4476
4335
  rows = filter(by_predicate).rows
4477
4336
  n_rows = rows.length
4478
4337
  if n_rows > 1
4479
4338
  raise TooManyRowsReturned, "Predicate #{by_predicate} returned #{n_rows} rows"
4480
4339
  elsif n_rows == 0
4481
- raise NoRowsReturned, "Predicate <{by_predicate!s}> returned no rows"
4340
+ raise NoRowsReturned, "Predicate #{by_predicate} returned no rows"
4341
+ end
4342
+ row = rows[0]
4343
+ if named
4344
+ columns.zip(row).to_h
4345
+ else
4346
+ row
4482
4347
  end
4483
- rows[0]
4484
4348
  else
4485
4349
  raise ArgumentError, "One of 'index' or 'by_predicate' must be set"
4486
4350
  end
@@ -4488,6 +4352,11 @@ module Polars
4488
4352
 
4489
4353
  # Convert columnar data to rows as Ruby arrays.
4490
4354
  #
4355
+ # @param named [Boolean]
4356
+ # Return hashes instead of arrays. The hashes are a mapping of
4357
+ # column name to row value. This is more expensive than returning an
4358
+ # array, but allows for accessing values by column name.
4359
+ #
4491
4360
  # @return [Array]
4492
4361
  #
4493
4362
  # @example
@@ -4499,8 +4368,79 @@ module Polars
4499
4368
  # )
4500
4369
  # df.rows
4501
4370
  # # => [[1, 2], [3, 4], [5, 6]]
4502
- def rows
4503
- _df.row_tuples
4371
+ # @example
4372
+ # df.rows(named: true)
4373
+ # # => [{"a"=>1, "b"=>2}, {"a"=>3, "b"=>4}, {"a"=>5, "b"=>6}]
4374
+ def rows(named: false)
4375
+ if named
4376
+ columns = columns()
4377
+ _df.row_tuples.map do |v|
4378
+ columns.zip(v).to_h
4379
+ end
4380
+ else
4381
+ _df.row_tuples
4382
+ end
4383
+ end
4384
+
4385
+ # Returns an iterator over the DataFrame of rows of python-native values.
4386
+ #
4387
+ # @param named [Boolean]
4388
+ # Return hashes instead of arrays. The hashes are a mapping of
4389
+ # column name to row value. This is more expensive than returning an
4390
+ # array, but allows for accessing values by column name.
4391
+ # @param buffer_size [Integer]
4392
+ # Determines the number of rows that are buffered internally while iterating
4393
+ # over the data; you should only modify this in very specific cases where the
4394
+ # default value is determined not to be a good fit to your access pattern, as
4395
+ # the speedup from using the buffer is significant (~2-4x). Setting this
4396
+ # value to zero disables row buffering.
4397
+ #
4398
+ # @return [Object]
4399
+ #
4400
+ # @example
4401
+ # df = Polars::DataFrame.new(
4402
+ # {
4403
+ # "a" => [1, 3, 5],
4404
+ # "b" => [2, 4, 6]
4405
+ # }
4406
+ # )
4407
+ # df.iter_rows.map { |row| row[0] }
4408
+ # # => [1, 3, 5]
4409
+ #
4410
+ # @example
4411
+ # df.iter_rows(named: true).map { |row| row["b"] }
4412
+ # # => [2, 4, 6]
4413
+ def iter_rows(named: false, buffer_size: 500, &block)
4414
+ return to_enum(:iter_rows, named: named, buffer_size: buffer_size) unless block_given?
4415
+
4416
+ # load into the local namespace for a modest performance boost in the hot loops
4417
+ columns = columns()
4418
+
4419
+ # note: buffering rows results in a 2-4x speedup over individual calls
4420
+ # to ".row(i)", so it should only be disabled in extremely specific cases.
4421
+ if buffer_size
4422
+ offset = 0
4423
+ while offset < height
4424
+ zerocopy_slice = slice(offset, buffer_size)
4425
+ rows_chunk = zerocopy_slice.rows(named: false)
4426
+ if named
4427
+ rows_chunk.each do |row|
4428
+ yield columns.zip(row).to_h
4429
+ end
4430
+ else
4431
+ rows_chunk.each(&block)
4432
+ end
4433
+ offset += buffer_size
4434
+ end
4435
+ elsif named
4436
+ height.times do |i|
4437
+ yield columns.zip(row(i)).to_h
4438
+ end
4439
+ else
4440
+ height.times do |i|
4441
+ yield row(i)
4442
+ end
4443
+ end
4504
4444
  end
4505
4445
 
4506
4446
  # Shrink DataFrame memory usage.
@@ -4534,7 +4474,6 @@ module Polars
4534
4474
  # # │ i64 ┆ i64 │
4535
4475
  # # ╞═════╪═════╡
4536
4476
  # # │ 1 ┆ 5 │
4537
- # # ├╌╌╌╌╌┼╌╌╌╌╌┤
4538
4477
  # # │ 3 ┆ 7 │
4539
4478
  # # └─────┴─────┘
4540
4479
  def take_every(n)
@@ -4602,11 +4541,8 @@ module Polars
4602
4541
  # # │ i64 ┆ i64 ┆ i64 │
4603
4542
  # # ╞═════╪══════╪═════╡
4604
4543
  # # │ 1 ┆ 6 ┆ 1 │
4605
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌┤
4606
4544
  # # │ 5 ┆ 7 ┆ 3 │
4607
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌┤
4608
4545
  # # │ 9 ┆ 9 ┆ 6 │
4609
- # # ├╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌┤
4610
4546
  # # │ 10 ┆ null ┆ 9 │
4611
4547
  # # └─────┴──────┴─────┘
4612
4548
  def interpolate
@@ -4687,7 +4623,6 @@ module Polars
4687
4623
  # # │ str ┆ i64 ┆ str ┆ bool ┆ list[i64] ┆ str │
4688
4624
  # # ╞════════╪═════╪═════╪══════╪═══════════╪═══════╡
4689
4625
  # # │ foo ┆ 1 ┆ a ┆ true ┆ [1, 2] ┆ baz │
4690
- # # ├╌╌╌╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌┼╌╌╌╌╌╌┼╌╌╌╌╌╌╌╌╌╌╌┼╌╌╌╌╌╌╌┤
4691
4626
  # # │ bar ┆ 2 ┆ b ┆ null ┆ [3] ┆ womp │
4692
4627
  # # └────────┴─────┴─────┴──────┴───────────┴───────┘
4693
4628
  def unnest(names)