@@ -30,10 +30,13 @@ class DecimalArray(ExtensionArray):
30
30
def __init__ (self , values ):
31
31
values = np .asarray (values , dtype = object )
32
32
33
- self .values = values
33
+ self ._data = values
34
34
# Some aliases for common attribute names to ensure pandas supports
35
35
# these
36
- self ._items = self ._data = self .data = self .values
36
+ self ._items = self .data = self ._data
37
+ # those aliases are currently not working due to assumptions
38
+ # in internal code (GH-20735)
39
+ # self._values = self.values = self.data
37
40
38
41
@classmethod
39
42
def _from_sequence (cls , scalars ):
@@ -45,27 +48,27 @@ def _from_factorized(cls, values, original):
45
48
46
49
def __getitem__ (self , item ):
47
50
if isinstance (item , numbers .Integral ):
48
- return self .values [item ]
51
+ return self ._data [item ]
49
52
else :
50
- return type (self )(self .values [item ])
53
+ return type (self )(self ._data [item ])
51
54
52
55
def copy (self , deep = False ):
53
56
if deep :
54
- return type (self )(self .values .copy ())
57
+ return type (self )(self ._data .copy ())
55
58
return type (self )(self )
56
59
57
60
def __setitem__ (self , key , value ):
58
61
if pd .api .types .is_list_like (value ):
59
62
value = [decimal .Decimal (v ) for v in value ]
60
63
else :
61
64
value = decimal .Decimal (value )
62
- self .values [key ] = value
65
+ self ._data [key ] = value
63
66
64
67
def __len__ (self ):
65
- return len (self .values )
68
+ return len (self ._data )
66
69
67
70
def __repr__ (self ):
68
- return 'DecimalArray({!r})' .format (self .values )
71
+ return 'DecimalArray({!r})' .format (self ._data )
69
72
70
73
@property
71
74
def nbytes (self ):
@@ -75,7 +78,7 @@ def nbytes(self):
75
78
return 0
76
79
77
80
def isna (self ):
78
- return np .array ([x .is_nan () for x in self .values ])
81
+ return np .array ([x .is_nan () for x in self ._data ])
79
82
80
83
def take (self , indexer , allow_fill = True , fill_value = None ):
81
84
indexer = np .asarray (indexer )
@@ -86,7 +89,7 @@ def take(self, indexer, allow_fill=True, fill_value=None):
86
89
return type (self )([self ._na_value ] * len (indexer ))
87
90
88
91
indexer = _ensure_platform_int (indexer )
89
- out = self .values .take (indexer )
92
+ out = self ._data .take (indexer )
90
93
out [mask ] = self ._na_value
91
94
92
95
return type (self )(out )
@@ -97,7 +100,7 @@ def _na_value(self):
97
100
98
101
@classmethod
99
102
def _concat_same_type (cls , to_concat ):
100
- return cls (np .concatenate ([x .values for x in to_concat ]))
103
+ return cls (np .concatenate ([x ._data for x in to_concat ]))
101
104
102
105
103
106
def make_data ():
0 commit comments