Skip to content

Commit aa9e002

Browse files
jbrockmendeljreback
authored andcommitted
Split and parametrize test_operators (pandas-dev#19173)
1 parent 1a240f6 commit aa9e002

File tree

3 files changed

+229
-198
lines changed

3 files changed

+229
-198
lines changed

pandas/tests/frame/test_operators.py

+47
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,53 @@
2828
_check_mixed_int)
2929

3030

31+
class TestDataFrameArithmetic(object):
32+
33+
@pytest.mark.xfail(reason='GH#7996 datetime64 units not converted to nano')
34+
def test_frame_sub_datetime64_not_ns(self):
35+
df = pd.DataFrame(date_range('20130101', periods=3))
36+
dt64 = np.datetime64('2013-01-01')
37+
assert dt64.dtype == 'datetime64[D]'
38+
res = df - dt64
39+
expected = pd.DataFrame([pd.Timedelta(days=0), pd.Timedelta(days=1),
40+
pd.Timedelta(days=2)])
41+
tm.assert_frame_equal(res, expected)
42+
43+
@pytest.mark.parametrize('data', [
44+
[1, 2, 3],
45+
[1.1, 2.2, 3.3],
46+
[pd.Timestamp('2011-01-01'), pd.Timestamp('2011-01-02'), pd.NaT],
47+
['x', 'y', 1]])
48+
@pytest.mark.parametrize('dtype', [None, object])
49+
def test_frame_radd_str_invalid(self, dtype, data):
50+
df = DataFrame(data, dtype=dtype)
51+
with pytest.raises(TypeError):
52+
'foo_' + df
53+
54+
@pytest.mark.parametrize('dtype', [None, object])
55+
def test_frame_with_dtype_radd_int(self, dtype):
56+
df = pd.DataFrame([1, 2, 3], dtype=dtype)
57+
expected = pd.DataFrame([2, 3, 4], dtype=dtype)
58+
result = 1 + df
59+
assert_frame_equal(result, expected)
60+
result = df + 1
61+
assert_frame_equal(result, expected)
62+
63+
@pytest.mark.parametrize('dtype', [None, object])
64+
def test_frame_with_dtype_radd_nan(self, dtype):
65+
df = pd.DataFrame([1, 2, 3], dtype=dtype)
66+
expected = pd.DataFrame([np.nan, np.nan, np.nan], dtype=dtype)
67+
result = np.nan + df
68+
assert_frame_equal(result, expected)
69+
result = df + np.nan
70+
assert_frame_equal(result, expected)
71+
72+
def test_frame_radd_str(self):
73+
df = pd.DataFrame(['x', np.nan, 'x'])
74+
assert_frame_equal('a' + df, pd.DataFrame(['ax', np.nan, 'ax']))
75+
assert_frame_equal(df + 'a', pd.DataFrame(['xa', np.nan, 'xa']))
76+
77+
3178
class TestDataFrameOperators(TestData):
3279

3380
def test_operators(self):

pandas/tests/series/test_dtypes.py

+13-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
import pytest
55

6-
from datetime import datetime
6+
from datetime import datetime, timedelta
77

88
import sys
99
import string
@@ -29,6 +29,18 @@
2929

3030
class TestSeriesDtypes(TestData):
3131

32+
def test_dt64_series_astype_object(self):
33+
dt64ser = Series(date_range('20130101', periods=3))
34+
result = dt64ser.astype(object)
35+
assert isinstance(result.iloc[0], datetime)
36+
assert result.dtype == np.object_
37+
38+
def test_td64_series_astype_object(self):
39+
tdser = Series(['59 Days', '59 Days', 'NaT'], dtype='timedelta64[ns]')
40+
result = tdser.astype(object)
41+
assert isinstance(result.iloc[0], timedelta)
42+
assert result.dtype == np.object_
43+
3244
@pytest.mark.parametrize("dtype", ["float32", "float64",
3345
"int64", "int32"])
3446
def test_astype(self, dtype):

0 commit comments

Comments
 (0)