Skip to content

Commit 4c1aa8c

Browse files
committed
patch ExtensionBlock fill_value, closes pandas-dev#27781
1 parent 23d141e commit 4c1aa8c

File tree

2 files changed

+23
-1
lines changed

2 files changed

+23
-1
lines changed

pandas/core/internals/blocks.py

+4-1
Original file line numberDiff line numberDiff line change
@@ -1627,7 +1627,10 @@ def _holder(self):
16271627
@property
16281628
def fill_value(self):
16291629
# Used in reindex_indexer
1630-
return self.values.dtype.na_value
1630+
try:
1631+
return self.values.dtype.fill_value
1632+
except AttributeError:
1633+
return self.values.dtype.na_value
16311634

16321635
@property
16331636
def _can_hold_na(self):

pandas/tests/extension/test_sparse.py

+19
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,11 @@ def data_for_twos(request):
4141
return SparseArray(np.ones(100) * 2)
4242

4343

44+
@pytest.fixture(params=[0, np.nan])
45+
def data_zeros(request):
46+
return SparseArray(np.zeros(100, dtype=int), fill_value=request.param)
47+
48+
4449
@pytest.fixture(params=[0, np.nan])
4550
def data_missing(request):
4651
"""Length 2 array with [NA, Valid]"""
@@ -169,6 +174,20 @@ def test_reindex(self, data, na_value):
169174
self._check_unsupported(data)
170175
super().test_reindex(data, na_value)
171176

177+
def test_boolean_mask_frame_fill_value(self, data):
178+
# https://github.com/pandas-dev/pandas/issues/27781
179+
df = pd.DataFrame({"A": data})
180+
181+
mask = np.random.choice([True, False], df.shape[0])
182+
result = pd.isna(df.iloc[mask]["A"])
183+
expected = pd.isna(df["A"].iloc[mask])
184+
self.assert_series_equal(result, expected)
185+
186+
mask = pd.Series(mask, index=df.index)
187+
result = pd.isna(df.loc[mask]["A"])
188+
expected = pd.isna(df["A"].loc[mask])
189+
self.assert_series_equal(result, expected)
190+
172191

173192
# Skipping TestSetitem, since we don't implement it.
174193

0 commit comments

Comments
 (0)