Skip to content

Commit fb3dda6

Browse files
committed
more tests; fix issue with accessor masking
1 parent 1fde41d commit fb3dda6

File tree

3 files changed

+23
-4
lines changed

3 files changed

+23
-4
lines changed

src/nested_pandas/series/accessor.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -508,9 +508,9 @@ def __getitem__(self, key: str | list[str]) -> NestedSeries:
508508
# on the number of fields requested and their dtypes
509509
if isinstance(key, list):
510510
new_array = self._series.array.view_fields(key)
511-
if len(key) == 1 and not isinstance(new_array.dtype, NestedDtype):
511+
if len(key) == 1 and not isinstance(new_array.dtype.field_dtype(key[0]), NestedDtype):
512512
# If only one field is requested, return it as a pd.Series
513-
return pd.Series(new_array, index=self._series.index, name=self._series.name)
513+
return self._series[key[0]]
514514
return NestedSeries(new_array, index=self._series.index, name=self._series.name)
515515

516516
# If the key is a single string, return the flat series for that field

src/nested_pandas/series/nestedseries.py

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,8 +50,6 @@ def __getitem__(self, key):
5050
if not isinstance(self.dtype, NestedDtype):
5151
return super().__getitem__(key)
5252

53-
if not isinstance(self.dtype, NestedDtype):
54-
return super().__getitem__(key)
5553
# Return a flatten series for a single field
5654
if isinstance(key, str) and key in self.fields:
5755
return self.nest[key]

tests/nested_pandas/series/test_accessor.py

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -769,6 +769,27 @@ def test___getitem___series_masking():
769769
_ = nf["nested"].nest[mask[0:23]]
770770

771771

772+
def test___getitem___single_list_field():
773+
"""Test that the .nest["field"] works for a single list field."""
774+
struct_array = pa.StructArray.from_arrays(
775+
arrays=[
776+
pa.array([np.array([1, 2, 3]), np.array([4, 5, 6])]),
777+
pa.array([np.array([6, 4, 2]), np.array([1, 2, 3])]),
778+
],
779+
names=["a", "b"],
780+
)
781+
series = NestedSeries(struct_array, dtype=NestedDtype(struct_array.type), index=[5, 7])
782+
assert_series_equal(
783+
series.nest[["a"]],
784+
pd.Series(
785+
data=[1, 2, 3, 4, 5, 6],
786+
index=[5, 5, 5, 7, 7, 7],
787+
name="a",
788+
dtype=pd.ArrowDtype(pa.int64()),
789+
),
790+
)
791+
792+
772793
def test___setitem__():
773794
"""Test that the .nest["field"] = ... works for a single field."""
774795
struct_array = pa.StructArray.from_arrays(

0 commit comments

Comments
 (0)