@@ -325,6 +325,43 @@ def test_multi_index_recovery_nameless(path, use_threads):
325325 assert df .reset_index ().equals (df2 .reset_index ())
326326
327327
328+ @pytest .mark .parametrize ("use_threads" , [True , False ])
329+ @pytest .mark .parametrize ("name" , [None , "foo" ])
330+ @pytest .mark .parametrize ("pandas" , [True , False ])
331+ def test_index_columns (path , use_threads , name , pandas ):
332+ df = pd .DataFrame ({"c0" : [0 , 1 ], "c1" : [2 , 3 ]}, dtype = "Int64" )
333+ df .index .name = name
334+ path_file = f"{ path } 0.parquet"
335+ if pandas :
336+ df .to_parquet (path_file , index = True )
337+ else :
338+ wr .s3 .to_parquet (df , path_file , index = True )
339+ wr .s3 .wait_objects_exist (paths = [path_file ], use_threads = use_threads )
340+ df2 = wr .s3 .read_parquet ([path_file ], columns = ["c0" ], use_threads = use_threads )
341+ assert df [["c0" ]].equals (df2 )
342+
343+
344+ @pytest .mark .parametrize ("use_threads" , [True , False ])
345+ @pytest .mark .parametrize ("name" , [None , "foo" ])
346+ @pytest .mark .parametrize ("pandas" , [True , False ])
347+ @pytest .mark .parametrize ("drop" , [True , False ])
348+ def test_range_index_columns (path , use_threads , name , pandas , drop ):
349+ df = pd .DataFrame ({"c0" : [0 , 1 ], "c1" : [2 , 3 ]}, dtype = "Int64" , index = pd .RangeIndex (start = 5 , stop = 7 , step = 1 ))
350+ df .index .name = name
351+ path_file = f"{ path } 0.parquet"
352+ if pandas :
353+ df .to_parquet (path_file , index = True )
354+ else :
355+ wr .s3 .to_parquet (df , path_file , index = True )
356+ wr .s3 .wait_objects_exist (paths = [path_file ], use_threads = use_threads )
357+
358+ name = "__index_level_0__" if name is None else name
359+ columns = ["c0" ] if drop else [name , "c0" ]
360+ df2 = wr .s3 .read_parquet ([path_file ], columns = columns , use_threads = use_threads )
361+
362+ assert df [["c0" ]].reset_index (level = 0 , drop = drop ).equals (df2 .reset_index (level = 0 , drop = drop ))
363+
364+
328365def test_to_parquet_dataset_sanitize (path ):
329366 df = pd .DataFrame ({"C0" : [0 , 1 ], "camelCase" : [2 , 3 ], "c**--2" : [4 , 5 ], "Par" : ["a" , "b" ]})
330367
0 commit comments