CLN: test_to_timedelta.py (#44843) · pandas-dev/pandas@b7991da (original) (raw)
`@@ -30,52 +30,45 @@ def test_to_timedelta_readonly(self, readonly):
`
30
30
`expected = to_timedelta([])
`
31
31
`tm.assert_index_equal(result, expected)
`
32
32
``
33
``
`-
def test_to_timedelta(self):
`
34
``
-
``
33
`+
def test_to_timedelta_null(self):
`
35
34
`result = to_timedelta(["", ""])
`
36
35
`assert isna(result).all()
`
37
36
``
``
37
`+
def test_to_timedelta_same_np_timedelta64(self):
`
38
38
`# pass thru
`
39
39
`result = to_timedelta(np.array([np.timedelta64(1, "s")]))
`
40
40
`expected = pd.Index(np.array([np.timedelta64(1, "s")]))
`
41
41
`tm.assert_index_equal(result, expected)
`
42
42
``
``
43
`+
def test_to_timedelta_series(self):
`
43
44
`# Series
`
44
45
`expected = Series([timedelta(days=1), timedelta(days=1, seconds=1)])
`
45
46
`result = to_timedelta(Series(["1d", "1days 00:00:01"]))
`
46
47
`tm.assert_series_equal(result, expected)
`
47
48
``
``
49
`+
def test_to_timedelta_units(self):
`
48
50
`# with units
`
49
51
`result = TimedeltaIndex(
`
50
52
` [np.timedelta64(0, "ns"), np.timedelta64(10, "s").astype("m8[ns]")]
`
51
53
` )
`
52
54
`expected = to_timedelta([0, 10], unit="s")
`
53
55
`tm.assert_index_equal(result, expected)
`
54
56
``
``
57
`+
@pytest.mark.parametrize(
`
``
58
`+
"dtype, unit",
`
``
59
`+
[
`
``
60
`+
["int64", "s"],
`
``
61
`+
["int64", "m"],
`
``
62
`+
["int64", "h"],
`
``
63
`+
["timedelta64[s]", "s"],
`
``
64
`+
["timedelta64[D]", "D"],
`
``
65
`+
],
`
``
66
`+
)
`
``
67
`+
def test_to_timedelta_units_dtypes(self, dtype, unit):
`
55
68
`# arrays of various dtypes
`
56
``
`-
arr = np.array([1] * 5, dtype="int64")
`
57
``
`-
result = to_timedelta(arr, unit="s")
`
58
``
`-
expected = TimedeltaIndex([np.timedelta64(1, "s")] * 5)
`
59
``
`-
tm.assert_index_equal(result, expected)
`
60
``
-
61
``
`-
arr = np.array([1] * 5, dtype="int64")
`
62
``
`-
result = to_timedelta(arr, unit="m")
`
63
``
`-
expected = TimedeltaIndex([np.timedelta64(1, "m")] * 5)
`
64
``
`-
tm.assert_index_equal(result, expected)
`
65
``
-
66
``
`-
arr = np.array([1] * 5, dtype="int64")
`
67
``
`-
result = to_timedelta(arr, unit="h")
`
68
``
`-
expected = TimedeltaIndex([np.timedelta64(1, "h")] * 5)
`
69
``
`-
tm.assert_index_equal(result, expected)
`
70
``
-
71
``
`-
arr = np.array([1] * 5, dtype="timedelta64[s]")
`
72
``
`-
result = to_timedelta(arr)
`
73
``
`-
expected = TimedeltaIndex([np.timedelta64(1, "s")] * 5)
`
74
``
`-
tm.assert_index_equal(result, expected)
`
75
``
-
76
``
`-
arr = np.array([1] * 5, dtype="timedelta64[D]")
`
77
``
`-
result = to_timedelta(arr)
`
78
``
`-
expected = TimedeltaIndex([np.timedelta64(1, "D")] * 5)
`
``
69
`+
arr = np.array([1] * 5, dtype=dtype)
`
``
70
`+
result = to_timedelta(arr, unit=unit)
`
``
71
`+
expected = TimedeltaIndex([np.timedelta64(1, unit)] * 5)
`
79
72
`tm.assert_index_equal(result, expected)
`
80
73
``
81
74
`def test_to_timedelta_oob_non_nano(self):
`
`@@ -91,31 +84,30 @@ def test_to_timedelta_oob_non_nano(self):
`
91
84
`with pytest.raises(OutOfBoundsTimedelta, match=msg):
`
92
85
`TimedeltaArray._from_sequence(arr)
`
93
86
``
94
``
`-
def test_to_timedelta_dataframe(self):
`
``
87
`+
@pytest.mark.parametrize(
`
``
88
`+
"arg", [np.arange(10).reshape(2, 5), pd.DataFrame(np.arange(10).reshape(2, 5))]
`
``
89
`+
)
`
``
90
`+
@pytest.mark.parametrize("errors", ["ignore", "raise", "coerce"])
`
``
91
`+
def test_to_timedelta_dataframe(self, arg, errors):
`
95
92
`# GH 11776
`
96
``
`-
arr = np.arange(10).reshape(2, 5)
`
97
``
`-
df = pd.DataFrame(np.arange(10).reshape(2, 5))
`
98
``
`-
for arg in (arr, df):
`
99
``
`-
with pytest.raises(TypeError, match="1-d array"):
`
100
``
`-
to_timedelta(arg)
`
101
``
`-
for errors in ["ignore", "raise", "coerce"]:
`
102
``
`-
with pytest.raises(TypeError, match="1-d array"):
`
103
``
`-
to_timedelta(arg, errors=errors)
`
``
93
`+
with pytest.raises(TypeError, match="1-d array"):
`
``
94
`+
to_timedelta(arg, errors=errors)
`
104
95
``
105
``
`-
def test_to_timedelta_invalid(self):
`
``
96
`+
def test_to_timedelta_invalid_errors(self):
`
106
97
``
107
98
`# bad value for errors parameter
`
108
99
`msg = "errors must be one of"
`
109
100
`with pytest.raises(ValueError, match=msg):
`
110
101
`to_timedelta(["foo"], errors="never")
`
111
102
``
``
103
`+
@pytest.mark.parametrize("arg", [[1, 2], 1])
`
``
104
`+
def test_to_timedelta_invalid_unit(self, arg):
`
112
105
`# these will error
`
113
106
`msg = "invalid unit abbreviation: foo"
`
114
107
`with pytest.raises(ValueError, match=msg):
`
115
``
`-
to_timedelta([1, 2], unit="foo")
`
116
``
`-
with pytest.raises(ValueError, match=msg):
`
117
``
`-
to_timedelta(1, unit="foo")
`
``
108
`+
to_timedelta(arg, unit="foo")
`
118
109
``
``
110
`+
def test_to_timedelta_time(self):
`
119
111
`# time not supported ATM
`
120
112
`msg = (
`
121
113
`"Value must be Timedelta, string, integer, float, timedelta or convertible"
`
`@@ -124,10 +116,12 @@ def test_to_timedelta_invalid(self):
`
124
116
`to_timedelta(time(second=1))
`
125
117
`assert to_timedelta(time(second=1), errors="coerce") is pd.NaT
`
126
118
``
``
119
`+
def test_to_timedelta_bad_value(self):
`
127
120
`msg = "Could not convert 'foo' to NumPy timedelta"
`
128
121
`with pytest.raises(ValueError, match=msg):
`
129
122
`to_timedelta(["foo", "bar"])
`
130
123
``
``
124
`+
def test_to_timedelta_bad_value_coerce(self):
`
131
125
`tm.assert_index_equal(
`
132
126
`TimedeltaIndex([pd.NaT, pd.NaT]),
`
133
127
`to_timedelta(["foo", "bar"], errors="coerce"),
`
`@@ -138,6 +132,7 @@ def test_to_timedelta_invalid(self):
`
138
132
`to_timedelta(["1 day", "bar", "1 min"], errors="coerce"),
`
139
133
` )
`
140
134
``
``
135
`+
def test_to_timedelta_invalid_errors_ignore(self):
`
141
136
`# gh-13613: these should not error because errors='ignore'
`
142
137
`invalid_data = "apple"
`
143
138
`assert invalid_data == to_timedelta(invalid_data, errors="ignore")
`
`@@ -213,11 +208,10 @@ def test_to_timedelta_on_missing_values(self):
`
213
208
`actual = to_timedelta(ser)
`
214
209
`tm.assert_series_equal(actual, expected)
`
215
210
``
216
``
`-
actual = to_timedelta(np.nan)
`
217
``
`-
assert actual.value == timedelta_NaT.astype("int64")
`
218
``
-
219
``
`-
actual = to_timedelta(pd.NaT)
`
220
``
`-
assert actual.value == timedelta_NaT.astype("int64")
`
``
211
`+
@pytest.mark.parametrize("val", [np.nan, pd.NaT])
`
``
212
`+
def test_to_timedelta_on_missing_values_scalar(self, val):
`
``
213
`+
actual = to_timedelta(val)
`
``
214
`+
assert actual.value == np.timedelta64("NaT").astype("int64")
`
221
215
``
222
216
`def test_to_timedelta_float(self):
`
223
217
`# https://github.com/pandas-dev/pandas/issues/25077
`
`@@ -237,16 +231,13 @@ def test_to_timedelta_ignore_strings_unit(self):
`
237
231
`result = to_timedelta(arr, unit="ns", errors="ignore")
`
238
232
`tm.assert_numpy_array_equal(result, arr)
`
239
233
``
240
``
`-
def test_to_timedelta_nullable_int64_dtype(self):
`
``
234
`+
@pytest.mark.parametrize(
`
``
235
`+
"expected_val, result_val", [[timedelta(days=2), 2], [None, None]]
`
``
236
`+
)
`
``
237
`+
def test_to_timedelta_nullable_int64_dtype(self, expected_val, result_val):
`
241
238
`# GH 35574
`
242
``
`-
expected = Series([timedelta(days=1), timedelta(days=2)])
`
243
``
`-
result = to_timedelta(Series([1, 2], dtype="Int64"), unit="days")
`
244
``
-
245
``
`-
tm.assert_series_equal(result, expected)
`
246
``
-
247
``
`-
IntegerArray Series with nulls
`
248
``
`-
expected = Series([timedelta(days=1), None])
`
249
``
`-
result = to_timedelta(Series([1, None], dtype="Int64"), unit="days")
`
``
239
`+
expected = Series([timedelta(days=1), expected_val])
`
``
240
`+
result = to_timedelta(Series([1, result_val], dtype="Int64"), unit="days")
`
250
241
``
251
242
`tm.assert_series_equal(result, expected)
`
252
243
``