57 lines
1.9 KiB
Python
57 lines
1.9 KiB
Python
|
import numpy as np
|
||
|
|
||
|
from pandas import (
|
||
|
Series,
|
||
|
interval_range,
|
||
|
)
|
||
|
import pandas._testing as tm
|
||
|
|
||
|
|
||
|
class TestInferObjects:
|
||
|
def test_copy(self, index_or_series):
|
||
|
# GH#50096
|
||
|
# case where we don't need to do inference because it is already non-object
|
||
|
obj = index_or_series(np.array([1, 2, 3], dtype="int64"))
|
||
|
|
||
|
result = obj.infer_objects(copy=False)
|
||
|
assert tm.shares_memory(result, obj)
|
||
|
|
||
|
# case where we try to do inference but can't do better than object
|
||
|
obj2 = index_or_series(np.array(["foo", 2], dtype=object))
|
||
|
result2 = obj2.infer_objects(copy=False)
|
||
|
assert tm.shares_memory(result2, obj2)
|
||
|
|
||
|
def test_infer_objects_series(self, index_or_series):
|
||
|
# GH#11221
|
||
|
actual = index_or_series(np.array([1, 2, 3], dtype="O")).infer_objects()
|
||
|
expected = index_or_series([1, 2, 3])
|
||
|
tm.assert_equal(actual, expected)
|
||
|
|
||
|
actual = index_or_series(np.array([1, 2, 3, None], dtype="O")).infer_objects()
|
||
|
expected = index_or_series([1.0, 2.0, 3.0, np.nan])
|
||
|
tm.assert_equal(actual, expected)
|
||
|
|
||
|
# only soft conversions, unconvertable pass thru unchanged
|
||
|
|
||
|
obj = index_or_series(np.array([1, 2, 3, None, "a"], dtype="O"))
|
||
|
actual = obj.infer_objects()
|
||
|
expected = index_or_series([1, 2, 3, None, "a"], dtype=object)
|
||
|
|
||
|
assert actual.dtype == "object"
|
||
|
tm.assert_equal(actual, expected)
|
||
|
|
||
|
def test_infer_objects_interval(self, index_or_series):
|
||
|
# GH#50090
|
||
|
ii = interval_range(1, 10)
|
||
|
obj = index_or_series(ii)
|
||
|
|
||
|
result = obj.astype(object).infer_objects()
|
||
|
tm.assert_equal(result, obj)
|
||
|
|
||
|
def test_infer_objects_bytes(self):
|
||
|
# GH#49650
|
||
|
ser = Series([b"a"], dtype="bytes")
|
||
|
expected = ser.copy()
|
||
|
result = ser.infer_objects()
|
||
|
tm.assert_series_equal(result, expected)
|