def test_concat_different_extension_dtypes_upcasts(self): a = Series(pd.core.arrays.integer_array([1, 2])) b = Series(to_decimal([1, 2])) result = pd.concat([a, b], ignore_index=True) expected = Series([1, 2, Decimal(1), Decimal(2)], dtype=object) tm.assert_series_equal(result, expected)
# String (["a", None], "string", StringArray._from_sequence(["a", None])), (["a", None], pd.StringDtype(), StringArray._from_sequence(["a", None])), # Boolean ([True, None], "boolean", BooleanArray._from_sequence([True, None])), ([True, None], pd.BooleanDtype(), BooleanArray._from_sequence([True, None])), # Index (pd.Index([1, 2]), None, PandasArray(np.array([1, 2], dtype=np.int64))), # Series[EA] returns the EA ( pd.Series(pd.Categorical(["a", "b"], categories=["a", "b", "c"])), None, pd.Categorical(["a", "b"], categories=["a", "b", "c"]), ), # "3rd party" EAs work ([decimal.Decimal(0), decimal.Decimal(1)], "decimal", to_decimal([0, 1])), # pass an ExtensionArray, but a different dtype ( period_array(["2000", "2001"], freq="D"), "category", pd.Categorical([pd.Period("2000", "D"), pd.Period("2001", "D")]), ), ], ) def test_array(data, dtype, expected): result = pd.array(data, dtype=dtype) tm.assert_equal(result, expected) def test_array_copy(): a = np.array([1, 2])
([0, 1], 'Sparse[int64]', pd.SparseArray([0, 1], dtype='int64')), # IntegerNA ([1, None], 'Int16', integer_array([1, None], dtype='Int16')), (pd.Series([1, 2]), None, PandasArray(np.array([1, 2], dtype=np.int64))), # Index (pd.Index([1, 2]), None, PandasArray(np.array([1, 2], dtype=np.int64))), # Series[EA] returns the EA (pd.Series(pd.Categorical(['a', 'b'], categories=['a', 'b', 'c'])), None, pd.Categorical(['a', 'b'], categories=['a', 'b', 'c'])), # "3rd party" EAs work ([decimal.Decimal(0), decimal.Decimal(1)], 'decimal', to_decimal([0, 1])), # pass an ExtensionArray, but a different dtype (period_array(['2000', '2001'], freq='D'), 'category', pd.Categorical([pd.Period('2000', 'D'), pd.Period('2001', 'D')])), ]) def test_array(data, dtype, expected): result = pd.array(data, dtype=dtype) tm.assert_equal(result, expected) def test_array_copy(): a = np.array([1, 2]) # default is to copy b = pd.array(a)