A PyQT GUI application for converting InfoLease report outputs into Excel files. Handles parsing and summarizing. Learns where files are meant to be store and compiles monthly and yearly summaries.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
InfoLeaseExtract/venv/Lib/site-packages/pandas/tests/series/methods/test_convert.py

139 lines
4.9 KiB

from datetime import datetime
import numpy as np
import pytest
from pandas import (
Series,
Timestamp,
)
import pandas._testing as tm
class TestConvert:
def test_convert(self):
# GH#10265
dt = datetime(2001, 1, 1, 0, 0)
td = dt - datetime(2000, 1, 1, 0, 0)
# Test coercion with mixed types
ser = Series(["a", "3.1415", dt, td])
results = ser._convert(numeric=True)
expected = Series([np.nan, 3.1415, np.nan, np.nan])
tm.assert_series_equal(results, expected)
# Test standard conversion returns original
results = ser._convert(datetime=True)
tm.assert_series_equal(results, ser)
results = ser._convert(numeric=True)
expected = Series([np.nan, 3.1415, np.nan, np.nan])
tm.assert_series_equal(results, expected)
results = ser._convert(timedelta=True)
tm.assert_series_equal(results, ser)
def test_convert_numeric_strings_with_other_true_args(self):
# test pass-through and non-conversion when other types selected
ser = Series(["1.0", "2.0", "3.0"])
results = ser._convert(datetime=True, numeric=True, timedelta=True)
expected = Series([1.0, 2.0, 3.0])
tm.assert_series_equal(results, expected)
results = ser._convert(True, False, True)
tm.assert_series_equal(results, ser)
def test_convert_datetime_objects(self):
ser = Series(
[datetime(2001, 1, 1, 0, 0), datetime(2001, 1, 1, 0, 0)], dtype="O"
)
results = ser._convert(datetime=True, numeric=True, timedelta=True)
expected = Series([datetime(2001, 1, 1, 0, 0), datetime(2001, 1, 1, 0, 0)])
tm.assert_series_equal(results, expected)
results = ser._convert(datetime=False, numeric=True, timedelta=True)
tm.assert_series_equal(results, ser)
def test_convert_datetime64(self):
# no-op if already dt64 dtype
ser = Series(
[
datetime(2001, 1, 1, 0, 0),
datetime(2001, 1, 2, 0, 0),
datetime(2001, 1, 3, 0, 0),
]
)
result = ser._convert(datetime=True)
expected = Series(
[Timestamp("20010101"), Timestamp("20010102"), Timestamp("20010103")],
dtype="M8[ns]",
)
tm.assert_series_equal(result, expected)
result = ser._convert(datetime=True)
tm.assert_series_equal(result, expected)
def test_convert_timedeltas(self):
td = datetime(2001, 1, 1, 0, 0) - datetime(2000, 1, 1, 0, 0)
ser = Series([td, td], dtype="O")
results = ser._convert(datetime=True, numeric=True, timedelta=True)
expected = Series([td, td])
tm.assert_series_equal(results, expected)
results = ser._convert(True, True, False)
tm.assert_series_equal(results, ser)
def test_convert_numeric_strings(self):
ser = Series([1.0, 2, 3], index=["a", "b", "c"])
result = ser._convert(numeric=True)
tm.assert_series_equal(result, ser)
# force numeric conversion
res = ser.copy().astype("O")
res["a"] = "1"
result = res._convert(numeric=True)
tm.assert_series_equal(result, ser)
res = ser.copy().astype("O")
res["a"] = "1."
result = res._convert(numeric=True)
tm.assert_series_equal(result, ser)
res = ser.copy().astype("O")
res["a"] = "garbled"
result = res._convert(numeric=True)
expected = ser.copy()
expected["a"] = np.nan
tm.assert_series_equal(result, expected)
def test_convert_mixed_type_noop(self):
# GH 4119, not converting a mixed type (e.g.floats and object)
ser = Series([1, "na", 3, 4])
result = ser._convert(datetime=True, numeric=True)
expected = Series([1, np.nan, 3, 4])
tm.assert_series_equal(result, expected)
ser = Series([1, "", 3, 4])
result = ser._convert(datetime=True, numeric=True)
tm.assert_series_equal(result, expected)
def test_convert_preserve_non_object(self):
# preserve if non-object
ser = Series([1], dtype="float32")
result = ser._convert(datetime=True)
tm.assert_series_equal(result, ser)
def test_convert_no_arg_error(self):
ser = Series(["1.0", "2"])
msg = r"At least one of datetime, numeric or timedelta must be True\."
with pytest.raises(ValueError, match=msg):
ser._convert()
def test_convert_preserve_bool(self):
ser = Series([1, True, 3, 5], dtype=object)
res = ser._convert(datetime=True, numeric=True)
expected = Series([1, 1, 3, 5], dtype="i8")
tm.assert_series_equal(res, expected)
def test_convert_preserve_all_bool(self):
ser = Series([False, True, False, False], dtype=object)
res = ser._convert(datetime=True, numeric=True)
expected = Series([False, True, False, False], dtype=bool)
tm.assert_series_equal(res, expected)