10000 NumPyBackedExtensionArray by TomAugspurger · Pull Request #24227 · pandas-dev/pandas · GitHub
[go: up one dir, main page]

Skip to content

NumPyBackedExtensionArray #24227

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 16 commits into from
Dec 28, 2018
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
fixup
  • Loading branch information
TomAugspurger committed Dec 28, 2018
commit bd70a1953f14b883534411330b5cad7a4d27af2d
12 changes: 6 additions & 6 deletions pandas/core/arrays/numpy_.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@

from pandas._libs import lib
from pandas.compat.numpy import function as nv
from pandas.util._validators import validate_fillna_kwargs

from pandas.core.dtypes.dtypes import ExtensionDtype
from pandas.core.dtypes.generic import ABCIndexClass, ABCSeries
from pandas.core.dtypes.inference import is_list_like
from pandas.core.dtypes.inference import is_array_like, is_list_like

from pandas import compat
from pandas.core import nanops
from pandas.core.missing import backfill_1d, pad_1d

from .base import ExtensionArray, ExtensionOpsMixin

Expand Down Expand Up @@ -114,7 +116,9 @@ class PandasArray(ExtensionArray, ExtensionOpsMixin, NDArrayOperatorsMixin):
def __init__(self, values):
if isinstance(values, type(self)):
values = values._ndarray
values = np.asarray(values)
if not isinstance(values, np.ndarray):
raise ValueError("'values' must be a NumPy array.")

if values.ndim != 1:
raise ValueError("PandasArray must be 1-dimensional.")

Expand Down Expand Up @@ -242,10 +246,6 @@ def isna(self):
return isna(self._ndarray)

def fillna(self, value=None, method=None, limit=None):
from pandas.api.types import is_array_like
from pandas.util._validators import validate_fillna_kwargs
from pandas.core.missing import pad_1d, backfill_1d

# TODO(_values_for_fillna): remove this
value, method = validate_fillna_kwargs(value, method)

Expand Down
11 changes: 8 additions & 3 deletions pandas/tests/arrays/test_numpy.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ def test_validate_reduction_keyword_args():

@td.skip_if_no("numpy", min_version="1.13.0")
def test_ufunc():
arr = PandasArray([-1.0, 0.0, 1.0])
arr = PandasArray(np.array([-1.0, 0.0, 1.0]))
result = np.abs(arr)
expected = PandasArray(np.abs(arr._ndarray))
tm.assert_extension_array_equal(result, expected)
Expand All @@ -73,12 +73,17 @@ def test_ufunc():
def test_basic_binop():
# Just a basic smoke test. The EA interface tests exercise this
# more thoroughly.
x = PandasArray([1, 2, 3])
x = PandasArray(np.array([1, 2, 3]))
result = x + x
expected = PandasArray([2, 4, 6])
expected = PandasArray(np.array([2, 4, 6]))
tm.assert_extension_array_equal(result, expected)


def test_constructor_no_coercion():
with pytest.raises(ValueError, match='NumPy array'):
PandasArray([1, 2, 3])


def test_series_constructor_with_copy():
ndarray = np.array([1, 2, 3])
ser = pd.Series(PandasArray(ndarray), copy=True)
Expand Down
0