37
37
from pandas .io .excel ._util import _writers
38
38
39
39
40
- def get_exp_unit (path : str ) -> str :
41
- if path .endswith (".ods" ):
42
- return "s"
43
- return "us"
44
-
45
-
46
40
@pytest .fixture
47
41
def frame (float_frame ):
48
42
"""
@@ -297,13 +291,12 @@ def test_read_excel_parse_dates(self, tmp_excel):
297
291
298
292
res = pd .read_excel (tmp_excel , parse_dates = ["date_strings" ], index_col = 0 )
299
293
expected = df [:]
300
- expected ["date_strings" ] = expected ["date_strings" ].astype ("M8[s ]" )
294
+ expected ["date_strings" ] = expected ["date_strings" ].astype ("M8[us ]" )
301
295
tm .assert_frame_equal (res , expected )
302
296
303
297
res = pd .read_excel (
304
298
tmp_excel , parse_dates = ["date_strings" ], date_format = "%m/%d/%Y" , index_col = 0
305
299
)
306
- expected ["date_strings" ] = expected ["date_strings" ].astype ("M8[s]" )
307
300
tm .assert_frame_equal (expected , res )
308
301
309
302
def test_multiindex_interval_datetimes (self , tmp_excel ):
@@ -364,13 +357,6 @@ def test_excel_round_trip_with_periodindex(self, tmp_excel, merge_cells):
364
357
names = ["date" , "category" ],
365
358
),
366
359
)
367
- time_format = (
368
- "datetime64[s]" if tmp_excel .endswith (".ods" ) else "datetime64[us]"
369
- )
370
- expected .index = expected .index .set_levels (
371
- expected .index .levels [0 ].astype (time_format ), level = 0
372
- )
373
-
374
360
tm .assert_frame_equal (result , expected )
375
361
376
362
@@ -507,24 +493,20 @@ def test_mixed(self, frame, tmp_excel):
507
493
tm .assert_frame_equal (mixed_frame , recons )
508
494
509
495
def test_ts_frame (self , tmp_excel ):
510
- unit = get_exp_unit (tmp_excel )
511
496
df = DataFrame (
512
497
np .random .default_rng (2 ).standard_normal ((5 , 4 )),
513
498
columns = Index (list ("ABCD" )),
514
- index = date_range ("2000-01-01" , periods = 5 , freq = "B" ),
499
+ index = date_range ("2000-01-01" , periods = 5 , freq = "B" , unit = "us" ),
515
500
)
516
501
517
502
# freq doesn't round-trip
518
503
index = pd .DatetimeIndex (np .asarray (df .index ), freq = None )
519
504
df .index = index
520
505
521
- expected = df [:]
522
- expected .index = expected .index .as_unit (unit )
523
-
524
506
df .to_excel (tmp_excel , sheet_name = "test1" )
525
507
with ExcelFile (tmp_excel ) as reader :
526
508
recons = pd .read_excel (reader , sheet_name = "test1" , index_col = 0 )
527
- tm .assert_frame_equal (expected , recons )
509
+ tm .assert_frame_equal (recons , df )
528
510
529
511
def test_basics_with_nan (self , frame , tmp_excel ):
530
512
frame = frame .copy ()
@@ -594,19 +576,15 @@ def test_inf_roundtrip(self, tmp_excel):
594
576
595
577
def test_sheets (self , frame , tmp_excel ):
596
578
# freq doesn't round-trip
597
- unit = get_exp_unit (tmp_excel )
598
579
tsframe = DataFrame (
599
580
np .random .default_rng (2 ).standard_normal ((5 , 4 )),
600
581
columns = Index (list ("ABCD" )),
601
- index = date_range ("2000-01-01" , periods = 5 , freq = "B" ),
582
+ index = date_range ("2000-01-01" , periods = 5 , freq = "B" , unit = "us" ),
602
583
)
603
584
604
585
index = pd .DatetimeIndex (np .asarray (tsframe .index ), freq = None )
605
586
tsframe .index = index
606
587
607
- expected = tsframe [:]
608
- expected .index = expected .index .as_unit (unit )
609
-
610
588
frame = frame .copy ()
611
589
frame .iloc [:5 , frame .columns .get_loc ("A" )] = np .nan
612
590
@@ -623,7 +601,7 @@ def test_sheets(self, frame, tmp_excel):
623
601
recons = pd .read_excel (reader , sheet_name = "test1" , index_col = 0 )
624
602
tm .assert_frame_equal (frame , recons )
625
603
recons = pd .read_excel (reader , sheet_name = "test2" , index_col = 0 )
626
- tm .assert_frame_equal (expected , recons )
604
+ tm .assert_frame_equal (tsframe , recons )
627
605
assert 2 == len (reader .sheet_names )
628
606
assert "test1" == reader .sheet_names [0 ]
629
607
assert "test2" == reader .sheet_names [1 ]
@@ -727,13 +705,12 @@ def test_excel_roundtrip_indexname(self, merge_cells, tmp_excel):
727
705
728
706
def test_excel_roundtrip_datetime (self , merge_cells , tmp_excel ):
729
707
# datetime.date, not sure what to test here exactly
730
- unit = get_exp_unit (tmp_excel )
731
708
732
709
# freq does not round-trip
733
710
tsframe = DataFrame (
734
711
np .random .default_rng (2 ).standard_normal ((5 , 4 )),
735
712
columns = Index (list ("ABCD" )),
736
- index = date_range ("2000-01-01" , periods = 5 , freq = "B" ),
713
+ index = date_range ("2000-01-01" , periods = 5 , freq = "B" , unit = "us" ),
737
714
)
738
715
index = pd .DatetimeIndex (np .asarray (tsframe .index ), freq = None )
739
716
tsframe .index = index
@@ -746,15 +723,12 @@ def test_excel_roundtrip_datetime(self, merge_cells, tmp_excel):
746
723
with ExcelFile (tmp_excel ) as reader :
747
724
recons = pd .read_excel (reader , sheet_name = "test1" , index_col = 0 )
748
725
749
- expected = tsframe [:]
750
- expected .index = expected .index .as_unit (unit )
751
- tm .assert_frame_equal (expected , recons )
726
+ tm .assert_frame_equal (tsframe , recons )
752
727
753
728
def test_excel_date_datetime_format (self , ext , tmp_excel , tmp_path ):
754
729
# see gh-4133
755
730
#
756
731
# Excel output format strings
757
- unit = get_exp_unit (tmp_excel )
758
732
df = DataFrame (
759
733
[
760
734
[date (2014 , 1 , 31 ), date (1999 , 9 , 24 )],
@@ -771,7 +745,6 @@ def test_excel_date_datetime_format(self, ext, tmp_excel, tmp_path):
771
745
index = ["DATE" , "DATETIME" ],
772
746
columns = ["X" , "Y" ],
773
747
)
774
- df_expected = df_expected .astype (f"M8[{ unit } ]" )
775
748
776
749
filename2 = tmp_path / f"tmp2{ ext } "
777
750
filename2 .touch ()
@@ -791,9 +764,6 @@ def test_excel_date_datetime_format(self, ext, tmp_excel, tmp_path):
791
764
with ExcelFile (filename2 ) as reader2 :
792
765
rs2 = pd .read_excel (reader2 , sheet_name = "test1" , index_col = 0 )
793
766
794
- # TODO: why do we get different units?
795
- rs2 = rs2 .astype (f"M8[{ unit } ]" )
796
-
797
767
tm .assert_frame_equal (rs1 , rs2 )
798
768
799
769
# Since the reader returns a datetime object for dates,
@@ -955,15 +925,14 @@ def test_to_excel_multiindex_cols(self, merge_cells, tmp_excel):
955
925
956
926
def test_to_excel_multiindex_dates (self , merge_cells , tmp_excel ):
957
927
# try multiindex with dates
958
- unit = get_exp_unit (tmp_excel )
959
928
tsframe = DataFrame (
960
929
np .random .default_rng (2 ).standard_normal ((5 , 4 )),
961
930
columns = Index (list ("ABCD" )),
962
931
index = date_range ("2000-01-01" , periods = 5 , freq = "B" ),
963
932
)
964
933
tsframe .index = MultiIndex .from_arrays (
965
934
[
966
- tsframe .index .as_unit (unit ),
935
+ tsframe .index .as_unit ("us" ),
967
936
np .arange (len (tsframe .index ), dtype = np .int64 ),
968
937
],
969
938
names = ["time" , "foo" ],
@@ -1314,7 +1283,6 @@ def test_comment_empty_line(self, tmp_excel):
1314
1283
1315
1284
def test_datetimes (self , tmp_excel ):
1316
1285
# Test writing and reading datetimes. For issue #9139. (xref #9185)
1317
- unit = get_exp_unit (tmp_excel )
1318
1286
datetimes = [
1319
1287
datetime (2013 , 1 , 13 , 1 , 2 , 3 ),
1320
1288
datetime (2013 , 1 , 13 , 2 , 45 , 56 ),
@@ -1333,8 +1301,7 @@ def test_datetimes(self, tmp_excel):
1333
1301
write_frame .to_excel (tmp_excel , sheet_name = "Sheet1" )
1334
1302
read_frame = pd .read_excel (tmp_excel , sheet_name = "Sheet1" , header = 0 )
1335
1303
1336
- expected = write_frame .astype (f"M8[{ unit } ]" )
1337
- tm .assert_series_equal (expected ["A" ], read_frame ["A" ])
1304
+ tm .assert_series_equal (write_frame ["A" ], read_frame ["A" ])
1338
1305
1339
1306
def test_bytes_io (self , engine ):
1340
1307
# see gh-7074
0 commit comments