Description
Code Sample, a copy-pastable example if possible
In [1]: import pandas as pd
In [2]: import decimal
In [3]: from pandas.tests.extension.decimal.array import DecimalArray
In [4]: s = pd.Series(DecimalArray([decimal.Decimal(i) for i in range(10)]))
In [5]: s
Out[5]:
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
dtype: decimal
In [6]: s2 = s[::2]
In [7]: s2
Out[7]:
0 0
2 2
4 4
6 6
8 8
dtype: decimal
In [8]: s2.get(1)
Out[8]: Decimal('2')
In [9]: t = pd.Series([i for i in range(10)], dtype=float)
In [10]: t
Out[10]:
0 0.0
1 1.0
2 2.0
3 3.0
4 4.0
5 5.0
6 6.0
7 7.0
8 8.0
9 9.0
dtype: float64
In [11]: t2 = t[::2]
In [12]: t2
Out[12]:
0 0.0
2 2.0
4 4.0
6 6.0
8 8.0
dtype: float64
In [13]: t2.get(1)
In [14]: t2.get(1) is None
Out[14]: True
Problem description
It appears that I didn't fix all of the issues in #20885, as I missed an issue when creating #20882 .
If you have an integer index backing an ExtensionArray
, and you do .get(n)
, where n
is not in the index, an incorrect result is returned.
Expected Output
In the example above, the value of s2.get(1)
should be None
, just as it is for t2.get(1)
.
Output of pd.show_versions()
INSTALLED VERSIONS
commit: None
python: 3.6.4.final.0
python-bits: 64
OS: Windows
OS-release: 10
machine: AMD64
processor: Intel64 Family 6 Model 60 Stepping 3, GenuineIntel
byteorder: little
LC_ALL: None
LANG: None
LOCALE: None.None
pandas: 0.23.0
pytest: 3.3.2
pip: 9.0.1
setuptools: 38.4.0
Cython: 0.27.3
numpy: 1.14.0
scipy: 1.0.0
pyarrow: None
xarray: None
IPython: 6.2.1
sphinx: 1.6.6
patsy: 0.5.0
dateutil: 2.6.1
pytz: 2017.3
blosc: None
bottleneck: 1.2.1
tables: 3.4.2
numexpr: 2.6.4
feather: None
matplotlib: 2.1.2
openpyxl: 2.4.10
xlrd: 1.1.0
xlwt: 1.3.0
xlsxwriter: 1.0.2
lxml: 4.1.1
bs4: 4.6.0
html5lib: 1.0.1
sqlalchemy: 1.2.1
pymysql: 0.7.11.None
psycopg2: None
jinja2: 2.10
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None