@@ -276,7 +276,10 @@ describe("lazyframe", () => {
276
276
foo : [ 1 ] ,
277
277
bar : [ "a" ] ,
278
278
} ) ;
279
- const actual = await df . lazy ( ) . select ( "*" ) . fetch ( 1 ) ;
279
+ const actual = await df
280
+ . lazy ( )
281
+ . select ( "*" )
282
+ . fetch ( 1 , { noOptimization : true } ) ;
280
283
expect ( actual ) . toFrameEqual ( expected ) ;
281
284
} ) ;
282
285
test ( "fetchSync" , ( ) => {
@@ -357,7 +360,46 @@ describe("lazyframe", () => {
357
360
} ) ;
358
361
expect ( actual ) . toFrameEqual ( expected ) ;
359
362
} ) ;
360
- describe ( "groupby" , ( ) => { } ) ;
363
+ describe ( "groupby" , ( ) => {
364
+ test ( "groupBy" , ( ) => {
365
+ let actual = pl
366
+ . DataFrame ( {
367
+ foo : [ 1 , 2 , 3 ] ,
368
+ ham : [ "a" , "a" , "b" ] ,
369
+ } )
370
+ . lazy ( )
371
+ . groupBy ( "ham" )
372
+ . agg ( pl . col ( "foo" ) . sum ( ) )
373
+ . collectSync ( ) ;
374
+ const expected = pl . DataFrame ( {
375
+ ham : [ "a" , "b" ] ,
376
+ foo : [ 3 , 3 ] ,
377
+ } ) ;
378
+ expect ( actual ) . toFrameEqual ( expected ) ;
379
+
380
+ actual = pl
381
+ . DataFrame ( {
382
+ foo : [ 1 , 2 , 3 ] ,
383
+ ham : [ "a" , "a" , "b" ] ,
384
+ } )
385
+ . lazy ( )
386
+ . groupBy ( "ham" , true )
387
+ . agg ( pl . col ( "foo" ) . sum ( ) )
388
+ . collectSync ( ) ;
389
+ expect ( actual ) . toFrameEqual ( expected ) ;
390
+
391
+ actual = pl
392
+ . DataFrame ( {
393
+ foo : [ 1 , 2 , 3 ] ,
394
+ ham : [ "a" , "a" , "b" ] ,
395
+ } )
396
+ . lazy ( )
397
+ . groupBy ( "ham" , { maintainOrder : true } )
398
+ . agg ( pl . col ( "foo" ) . sum ( ) )
399
+ . collectSync ( ) ;
400
+ expect ( actual ) . toFrameEqual ( expected ) ;
401
+ } ) ;
402
+ } ) ;
361
403
test ( "head" , ( ) => {
362
404
const actual = pl
363
405
. DataFrame ( {
@@ -1096,6 +1138,90 @@ describe("lazyframe", () => {
1096
1138
] ) ;
1097
1139
expect ( actual ) . toFrameEqualIgnoringOrder ( expected ) ;
1098
1140
} ) ;
1141
+ test ( "withColumn:series" , async ( ) => {
1142
+ const actual : pl . DataFrame = pl
1143
+ . DataFrame ( )
1144
+ . lazy ( )
1145
+ . withColumn ( pl . Series ( "series1" , [ 1 , 2 , 3 , 4 ] , pl . Int16 ) )
1146
+ . collectSync ( ) ;
1147
+ const expected : pl . DataFrame = pl . DataFrame ( [
1148
+ pl . Series ( "series1" , [ 1 , 2 , 3 , 4 ] , pl . Int16 ) ,
1149
+ ] ) ;
1150
+ expect ( actual ) . toFrameEqual ( expected ) ;
1151
+ } ) ;
1152
+ test ( "withColumns:series" , async ( ) => {
1153
+ const actual : pl . DataFrame = pl
1154
+ . DataFrame ( )
1155
+ . lazy ( )
1156
+ . withColumns (
1157
+ pl . Series ( "series1" , [ 1 , 2 , 3 , 4 ] , pl . Int16 ) ,
1158
+ pl . Series ( "series2" , [ 1 , 2 , 3 , 4 ] , pl . Int32 ) ,
1159
+ )
1160
+ . collectSync ( ) ;
1161
+ const expected : pl . DataFrame = pl . DataFrame ( [
1162
+ pl . Series ( "series1" , [ 1 , 2 , 3 , 4 ] , pl . Int16 ) ,
1163
+ pl . Series ( "series2" , [ 1 , 2 , 3 , 4 ] , pl . Int32 ) ,
1164
+ ] ) ;
1165
+ expect ( actual ) . toFrameEqual ( expected ) ;
1166
+ } ) ;
1167
+ test ( "select:series" , async ( ) => {
1168
+ let actual : pl . DataFrame = pl
1169
+ . DataFrame ( )
1170
+ . lazy ( )
1171
+ . select (
1172
+ pl . Series ( "series1" , [ 1 , 2 , 3 , 4 ] , pl . Int16 ) ,
1173
+ pl . Series ( "series2" , [ 1 , 2 , 3 , 4 ] , pl . Int32 ) ,
1174
+ )
1175
+ . collectSync ( ) ;
1176
+ let expected : pl . DataFrame = pl . DataFrame ( [
1177
+ pl . Series ( "series1" , [ 1 , 2 , 3 , 4 ] , pl . Int16 ) ,
1178
+ pl . Series ( "series2" , [ 1 , 2 , 3 , 4 ] , pl . Int32 ) ,
1179
+ ] ) ;
1180
+ expect ( actual ) . toFrameEqual ( expected ) ;
1181
+ actual = pl
1182
+ . DataFrame ( { text : [ "hello" ] } )
1183
+ . lazy ( )
1184
+ . select ( pl . Series ( "series" , [ 1 , 2 , 3 ] ) )
1185
+ . collectSync ( ) ;
1186
+
1187
+ expected = pl . DataFrame ( [ pl . Series ( "series" , [ 1 , 2 , 3 ] ) ] ) ;
1188
+ expect ( actual ) . toFrameEqual ( expected ) ;
1189
+
1190
+ actual = pl
1191
+ . DataFrame ( { text : [ "hello" ] } )
1192
+ . lazy ( )
1193
+ . select ( "text" , pl . Series ( "series" , [ 1 ] ) )
1194
+ . collectSync ( ) ;
1195
+ expected = pl . DataFrame ( { text : [ "hello" ] , series : [ 1 ] } ) ;
1196
+ expect ( actual ) . toFrameEqual ( expected ) ;
1197
+ } ) ;
1198
+ test ( "select:lit" , ( ) => {
1199
+ const df = pl . DataFrame ( { a : [ 1 ] } , { schema : { a : pl . Float32 } } ) ;
1200
+ let actual = df . lazy ( ) . select ( pl . col ( "a" ) , pl . lit ( 1 ) ) . collectSync ( ) ;
1201
+ const expected = pl . DataFrame ( {
1202
+ a : [ 1 ] ,
1203
+ literal : [ 1 ] ,
1204
+ } ) ;
1205
+ expect ( actual ) . toFrameEqual ( expected ) ;
1206
+ actual = df
1207
+ . lazy ( )
1208
+ . select ( pl . col ( "a" ) . mul ( 2 ) . alias ( "b" ) , pl . lit ( 2 ) )
1209
+ . collectSync ( ) ;
1210
+ const expected2 = pl . DataFrame ( {
1211
+ b : [ 2 ] ,
1212
+ literal : [ 2 ] ,
1213
+ } ) ;
1214
+ expect ( actual ) . toFrameEqual ( expected2 ) ;
1215
+ } ) ;
1216
+ test ( "inspect" , ( ) => {
1217
+ const actual = pl
1218
+ . DataFrame ( {
1219
+ foo : [ 1 , 2 , 9 ] ,
1220
+ bar : [ 6 , 2 , 8 ] ,
1221
+ } )
1222
+ . lazy ( ) ;
1223
+ expect ( actual ) . toBeDefined ( ) ;
1224
+ } ) ;
1099
1225
test ( "withColumns" , ( ) => {
1100
1226
const actual = pl
1101
1227
. DataFrame ( {
@@ -1120,7 +1246,7 @@ describe("lazyframe", () => {
1120
1246
bar : [ 6 , 2 , 8 ] ,
1121
1247
} )
1122
1248
. lazy ( )
1123
- . withColumns ( [ pl . lit ( "a" ) . alias ( "col_a" ) , pl . lit ( "b" ) . alias ( "col_b" ) ] )
1249
+ . withColumns ( pl . lit ( "a" ) . alias ( "col_a" ) , pl . lit ( "b" ) . alias ( "col_b" ) )
1124
1250
. collectSync ( ) ;
1125
1251
const expected = pl . DataFrame ( [
1126
1252
pl . Series ( "foo" , [ 1 , 2 , 9 ] , pl . Int16 ) ,
@@ -1280,7 +1406,10 @@ describe("lazyframe", () => {
1280
1406
. lazy ( ) ;
1281
1407
await ldf . sinkCSV ( "./test.csv" ) . collect ( ) ;
1282
1408
const newDF : pl . DataFrame = pl . readCSV ( "./test.csv" ) ;
1283
- const actualDf : pl . DataFrame = await ldf . collect ( { streaming : true } ) ;
1409
+ const actualDf : pl . DataFrame = await ldf . collect ( {
1410
+ streaming : true ,
1411
+ noOptimization : true ,
1412
+ } ) ;
1284
1413
expect ( newDF . sort ( "foo" ) ) . toFrameEqual ( actualDf ) ;
1285
1414
fs . rmSync ( "./test.csv" ) ;
1286
1415
} ) ;
0 commit comments