@@ -459,6 +459,47 @@ def test_melt_ea_columns(self):
459
459
)
460
460
tm .assert_frame_equal (result , expected )
461
461
462
+ def test_melt_preserves_datetime (self ):
463
+ df = DataFrame (
464
+ data = [
465
+ {
466
+ "type" : "A0" ,
467
+ "start_date" : pd .Timestamp ("2023/03/01" , tz = "Asia/Tokyo" ),
468
+ "end_date" : pd .Timestamp ("2023/03/10" , tz = "Asia/Tokyo" ),
469
+ },
470
+ {
471
+ "type" : "A1" ,
472
+ "start_date" : pd .Timestamp ("2023/03/01" , tz = "Asia/Tokyo" ),
473
+ "end_date" : pd .Timestamp ("2023/03/11" , tz = "Asia/Tokyo" ),
474
+ },
475
+ ],
476
+ index = ["aaaa" , "bbbb" ],
477
+ )
478
+ result = df .melt (
479
+ id_vars = ["type" ],
480
+ value_vars = ["start_date" , "end_date" ],
481
+ var_name = "start/end" ,
482
+ value_name = "date" ,
483
+ )
484
+ expected = DataFrame (
485
+ {
486
+ "type" : {0 : "A0" , 1 : "A1" , 2 : "A0" , 3 : "A1" },
487
+ "start/end" : {
488
+ 0 : "start_date" ,
489
+ 1 : "start_date" ,
490
+ 2 : "end_date" ,
491
+ 3 : "end_date" ,
492
+ },
493
+ "date" : {
494
+ 0 : pd .Timestamp ("2023-03-01 00:00:00+0900" , tz = "Asia/Tokyo" ),
495
+ 1 : pd .Timestamp ("2023-03-01 00:00:00+0900" , tz = "Asia/Tokyo" ),
496
+ 2 : pd .Timestamp ("2023-03-10 00:00:00+0900" , tz = "Asia/Tokyo" ),
497
+ 3 : pd .Timestamp ("2023-03-11 00:00:00+0900" , tz = "Asia/Tokyo" ),
498
+ },
499
+ }
500
+ )
501
+ tm .assert_frame_equal (result , expected )
502
+
462
503
463
504
class TestLreshape :
464
505
def test_pairs (self ):
0 commit comments