Skip to content

Commit cf12f9b

Browse files
update excel tests
1 parent 9faa930 commit cf12f9b

File tree

2 files changed

+10
-71
lines changed

2 files changed

+10
-71
lines changed

pandas/tests/io/excel/test_readers.py

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -134,18 +134,8 @@ def df_ref(datapath):
134134
return df_ref
135135

136136

137-
def get_exp_unit(read_ext: str, engine: str | None) -> str:
138-
unit = "us"
139-
if (read_ext == ".ods") ^ (engine == "calamine"):
140-
unit = "s"
141-
return unit
142-
143-
144137
def adjust_expected(expected: DataFrame, read_ext: str, engine: str | None) -> None:
145138
expected.index.name = None
146-
unit = get_exp_unit(read_ext, engine)
147-
# error: "Index" has no attribute "as_unit"
148-
expected.index = expected.index.as_unit(unit) # type: ignore[attr-defined]
149139

150140

151141
def xfail_datetimes_with_pyxlsb(engine, request):
@@ -490,7 +480,6 @@ def test_excel_table(self, request, engine, read_ext, df_ref):
490480
def test_reader_special_dtypes(self, request, engine, read_ext):
491481
xfail_datetimes_with_pyxlsb(engine, request)
492482

493-
unit = get_exp_unit(read_ext, engine)
494483
expected = DataFrame.from_dict(
495484
{
496485
"IntCol": [1, 2, -3, 4, 0],
@@ -506,7 +495,6 @@ def test_reader_special_dtypes(self, request, engine, read_ext):
506495
datetime(2013, 12, 14),
507496
datetime(2015, 3, 14),
508497
],
509-
dtype=f"M8[{unit}]",
510498
),
511499
},
512500
)
@@ -665,8 +653,6 @@ def test_dtype_backend(self, read_ext, dtype_backend, engine, tmp_excel):
665653
expected["j"] = ArrowExtensionArray(pa.array([None, None]))
666654
else:
667655
expected = df
668-
unit = get_exp_unit(read_ext, engine)
669-
expected["i"] = expected["i"].astype(f"M8[{unit}]")
670656

671657
tm.assert_frame_equal(result, expected)
672658

@@ -1034,8 +1020,6 @@ def test_read_excel_multiindex(self, request, engine, read_ext):
10341020
# see gh-4679
10351021
xfail_datetimes_with_pyxlsb(engine, request)
10361022

1037-
unit = get_exp_unit(read_ext, engine)
1038-
10391023
mi = MultiIndex.from_product([["foo", "bar"], ["a", "b"]])
10401024
mi_file = "testmultiindex" + read_ext
10411025

@@ -1049,8 +1033,6 @@ def test_read_excel_multiindex(self, request, engine, read_ext):
10491033
],
10501034
columns=mi,
10511035
)
1052-
expected[mi[2]] = expected[mi[2]].astype(f"M8[{unit}]")
1053-
10541036
actual = pd.read_excel(
10551037
mi_file, sheet_name="mi_column", header=[0, 1], index_col=0
10561038
)
@@ -1130,7 +1112,6 @@ def test_read_excel_multiindex_blank_after_name(
11301112
mi_file = "testmultiindex" + read_ext
11311113
mi = MultiIndex.from_product([["foo", "bar"], ["a", "b"]], names=["c1", "c2"])
11321114

1133-
unit = get_exp_unit(read_ext, engine)
11341115
expected = DataFrame(
11351116
[
11361117
[1, 2.5, pd.Timestamp("2015-01-01"), True],
@@ -1144,7 +1125,6 @@ def test_read_excel_multiindex_blank_after_name(
11441125
names=["ilvl1", "ilvl2"],
11451126
),
11461127
)
1147-
expected[mi[2]] = expected[mi[2]].astype(f"M8[{unit}]")
11481128
result = pd.read_excel(
11491129
mi_file,
11501130
sheet_name=sheet_name,
@@ -1248,8 +1228,6 @@ def test_read_excel_skiprows(self, request, engine, read_ext):
12481228
# GH 4903
12491229
xfail_datetimes_with_pyxlsb(engine, request)
12501230

1251-
unit = get_exp_unit(read_ext, engine)
1252-
12531231
actual = pd.read_excel(
12541232
"testskiprows" + read_ext, sheet_name="skiprows_list", skiprows=[0, 2]
12551233
)
@@ -1262,7 +1240,6 @@ def test_read_excel_skiprows(self, request, engine, read_ext):
12621240
],
12631241
columns=["a", "b", "c", "d"],
12641242
)
1265-
expected["c"] = expected["c"].astype(f"M8[{unit}]")
12661243
tm.assert_frame_equal(actual, expected)
12671244

12681245
actual = pd.read_excel(
@@ -1295,13 +1272,11 @@ def test_read_excel_skiprows(self, request, engine, read_ext):
12951272
],
12961273
columns=["a", "b", "c", "d"],
12971274
)
1298-
expected["c"] = expected["c"].astype(f"M8[{unit}]")
12991275
tm.assert_frame_equal(actual, expected)
13001276

13011277
def test_read_excel_skiprows_callable_not_in(self, request, engine, read_ext):
13021278
# GH 4903
13031279
xfail_datetimes_with_pyxlsb(engine, request)
1304-
unit = get_exp_unit(read_ext, engine)
13051280

13061281
actual = pd.read_excel(
13071282
"testskiprows" + read_ext,
@@ -1317,7 +1292,6 @@ def test_read_excel_skiprows_callable_not_in(self, request, engine, read_ext):
13171292
],
13181293
columns=["a", "b", "c", "d"],
13191294
)
1320-
expected["c"] = expected["c"].astype(f"M8[{unit}]")
13211295
tm.assert_frame_equal(actual, expected)
13221296

13231297
def test_read_excel_nrows(self, read_ext):
@@ -1687,9 +1661,7 @@ def test_read_datetime_multiindex(self, request, engine, read_ext):
16871661
with pd.ExcelFile(f) as excel:
16881662
actual = pd.read_excel(excel, header=[0, 1], index_col=0, engine=engine)
16891663

1690-
unit = get_exp_unit(read_ext, engine)
1691-
1692-
dti = pd.DatetimeIndex(["2020-02-29", "2020-03-01"], dtype=f"M8[{unit}]")
1664+
dti = pd.DatetimeIndex(["2020-02-29", "2020-03-01"])
16931665
expected_column_index = MultiIndex.from_arrays(
16941666
[dti[:1], dti[1:]],
16951667
names=[

pandas/tests/io/excel/test_writers.py

Lines changed: 9 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,6 @@
3737
from pandas.io.excel._util import _writers
3838

3939

40-
def get_exp_unit(path: str) -> str:
41-
if path.endswith(".ods"):
42-
return "s"
43-
return "us"
44-
45-
4640
@pytest.fixture
4741
def frame(float_frame):
4842
"""
@@ -297,13 +291,12 @@ def test_read_excel_parse_dates(self, tmp_excel):
297291

298292
res = pd.read_excel(tmp_excel, parse_dates=["date_strings"], index_col=0)
299293
expected = df[:]
300-
expected["date_strings"] = expected["date_strings"].astype("M8[s]")
294+
expected["date_strings"] = expected["date_strings"].astype("M8[us]")
301295
tm.assert_frame_equal(res, expected)
302296

303297
res = pd.read_excel(
304298
tmp_excel, parse_dates=["date_strings"], date_format="%m/%d/%Y", index_col=0
305299
)
306-
expected["date_strings"] = expected["date_strings"].astype("M8[s]")
307300
tm.assert_frame_equal(expected, res)
308301

309302
def test_multiindex_interval_datetimes(self, tmp_excel):
@@ -364,13 +357,6 @@ def test_excel_round_trip_with_periodindex(self, tmp_excel, merge_cells):
364357
names=["date", "category"],
365358
),
366359
)
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-
374360
tm.assert_frame_equal(result, expected)
375361

376362

@@ -507,24 +493,20 @@ def test_mixed(self, frame, tmp_excel):
507493
tm.assert_frame_equal(mixed_frame, recons)
508494

509495
def test_ts_frame(self, tmp_excel):
510-
unit = get_exp_unit(tmp_excel)
511496
df = DataFrame(
512497
np.random.default_rng(2).standard_normal((5, 4)),
513498
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"),
515500
)
516501

517502
# freq doesn't round-trip
518503
index = pd.DatetimeIndex(np.asarray(df.index), freq=None)
519504
df.index = index
520505

521-
expected = df[:]
522-
expected.index = expected.index.as_unit(unit)
523-
524506
df.to_excel(tmp_excel, sheet_name="test1")
525507
with ExcelFile(tmp_excel) as reader:
526508
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)
528510

529511
def test_basics_with_nan(self, frame, tmp_excel):
530512
frame = frame.copy()
@@ -594,19 +576,15 @@ def test_inf_roundtrip(self, tmp_excel):
594576

595577
def test_sheets(self, frame, tmp_excel):
596578
# freq doesn't round-trip
597-
unit = get_exp_unit(tmp_excel)
598579
tsframe = DataFrame(
599580
np.random.default_rng(2).standard_normal((5, 4)),
600581
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"),
602583
)
603584

604585
index = pd.DatetimeIndex(np.asarray(tsframe.index), freq=None)
605586
tsframe.index = index
606587

607-
expected = tsframe[:]
608-
expected.index = expected.index.as_unit(unit)
609-
610588
frame = frame.copy()
611589
frame.iloc[:5, frame.columns.get_loc("A")] = np.nan
612590

@@ -623,7 +601,7 @@ def test_sheets(self, frame, tmp_excel):
623601
recons = pd.read_excel(reader, sheet_name="test1", index_col=0)
624602
tm.assert_frame_equal(frame, recons)
625603
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)
627605
assert 2 == len(reader.sheet_names)
628606
assert "test1" == reader.sheet_names[0]
629607
assert "test2" == reader.sheet_names[1]
@@ -727,13 +705,12 @@ def test_excel_roundtrip_indexname(self, merge_cells, tmp_excel):
727705

728706
def test_excel_roundtrip_datetime(self, merge_cells, tmp_excel):
729707
# datetime.date, not sure what to test here exactly
730-
unit = get_exp_unit(tmp_excel)
731708

732709
# freq does not round-trip
733710
tsframe = DataFrame(
734711
np.random.default_rng(2).standard_normal((5, 4)),
735712
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"),
737714
)
738715
index = pd.DatetimeIndex(np.asarray(tsframe.index), freq=None)
739716
tsframe.index = index
@@ -746,15 +723,12 @@ def test_excel_roundtrip_datetime(self, merge_cells, tmp_excel):
746723
with ExcelFile(tmp_excel) as reader:
747724
recons = pd.read_excel(reader, sheet_name="test1", index_col=0)
748725

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)
752727

753728
def test_excel_date_datetime_format(self, ext, tmp_excel, tmp_path):
754729
# see gh-4133
755730
#
756731
# Excel output format strings
757-
unit = get_exp_unit(tmp_excel)
758732
df = DataFrame(
759733
[
760734
[date(2014, 1, 31), date(1999, 9, 24)],
@@ -771,7 +745,6 @@ def test_excel_date_datetime_format(self, ext, tmp_excel, tmp_path):
771745
index=["DATE", "DATETIME"],
772746
columns=["X", "Y"],
773747
)
774-
df_expected = df_expected.astype(f"M8[{unit}]")
775748

776749
filename2 = tmp_path / f"tmp2{ext}"
777750
filename2.touch()
@@ -791,9 +764,6 @@ def test_excel_date_datetime_format(self, ext, tmp_excel, tmp_path):
791764
with ExcelFile(filename2) as reader2:
792765
rs2 = pd.read_excel(reader2, sheet_name="test1", index_col=0)
793766

794-
# TODO: why do we get different units?
795-
rs2 = rs2.astype(f"M8[{unit}]")
796-
797767
tm.assert_frame_equal(rs1, rs2)
798768

799769
# Since the reader returns a datetime object for dates,
@@ -955,15 +925,14 @@ def test_to_excel_multiindex_cols(self, merge_cells, tmp_excel):
955925

956926
def test_to_excel_multiindex_dates(self, merge_cells, tmp_excel):
957927
# try multiindex with dates
958-
unit = get_exp_unit(tmp_excel)
959928
tsframe = DataFrame(
960929
np.random.default_rng(2).standard_normal((5, 4)),
961930
columns=Index(list("ABCD")),
962931
index=date_range("2000-01-01", periods=5, freq="B"),
963932
)
964933
tsframe.index = MultiIndex.from_arrays(
965934
[
966-
tsframe.index.as_unit(unit),
935+
tsframe.index.as_unit("us"),
967936
np.arange(len(tsframe.index), dtype=np.int64),
968937
],
969938
names=["time", "foo"],
@@ -1314,7 +1283,6 @@ def test_comment_empty_line(self, tmp_excel):
13141283

13151284
def test_datetimes(self, tmp_excel):
13161285
# Test writing and reading datetimes. For issue #9139. (xref #9185)
1317-
unit = get_exp_unit(tmp_excel)
13181286
datetimes = [
13191287
datetime(2013, 1, 13, 1, 2, 3),
13201288
datetime(2013, 1, 13, 2, 45, 56),
@@ -1333,8 +1301,7 @@ def test_datetimes(self, tmp_excel):
13331301
write_frame.to_excel(tmp_excel, sheet_name="Sheet1")
13341302
read_frame = pd.read_excel(tmp_excel, sheet_name="Sheet1", header=0)
13351303

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"])
13381305

13391306
def test_bytes_io(self, engine):
13401307
# see gh-7074

0 commit comments

Comments
 (0)