def test_from_datetime64_freq_changes(): # https://github.com/pandas-dev/pandas/issues/23438 arr = pd.date_range("2017", periods=3, freq="D") result = PeriodArray._from_datetime64(arr, freq="M") expected = period_array(['2017-01-01', '2017-01-01', '2017-01-01'], freq="M") tm.assert_period_array_equal(result, expected)
def test_period_array_readonly_object(): # https://github.com/pandas-dev/pandas/issues/25403 pa = period_array([pd.Period('2019-01-01')]) arr = np.asarray(pa, dtype='object') arr.setflags(write=False) result = period_array(arr) tm.assert_period_array_equal(result, pa) result = pd.Series(arr) tm.assert_series_equal(result, pd.Series(pa)) result = pd.DataFrame({"A": arr}) tm.assert_frame_equal(result, pd.DataFrame({"A": pa}))
def test_values_consistent(array, expected_type, dtype): l_values = pd.Series(array)._values r_values = pd.Index(array)._values assert type(l_values) is expected_type assert type(l_values) is type(r_values) if isinstance(l_values, np.ndarray): tm.assert_numpy_array_equal(l_values, r_values) elif isinstance(l_values, pd.Index): tm.assert_index_equal(l_values, r_values) elif pd.api.types.is_categorical(l_values): tm.assert_categorical_equal(l_values, r_values) elif pd.api.types.is_period_dtype(l_values): tm.assert_period_array_equal(l_values, r_values) elif pd.api.types.is_interval_dtype(l_values): tm.assert_interval_array_equal(l_values, r_values) else: raise TypeError("Unexpected type {}".format(type(l_values))) assert l_values.dtype == dtype assert r_values.dtype == dtype
def test_setitem(key, value, expected): arr = PeriodArray(np.arange(3), freq="D") expected = PeriodArray(expected, freq="D") arr[key] = value tm.assert_period_array_equal(arr, expected)
def test_astype_period(): arr = period_array(['2000', '2001', None], freq='D') result = arr.astype(PeriodDtype("M")) expected = period_array(['2000', '2001', None], freq='M') tm.assert_period_array_equal(result, expected)
def test_astype_period(): arr = period_array(["2000", "2001", None], freq="D") result = arr.astype(PeriodDtype("M")) expected = period_array(["2000", "2001", None], freq="M") tm.assert_period_array_equal(result, expected)