Fix 'Series.__repr__()' when the series is empty

This commit is contained in:
Seth Michael Larson 2020-10-27 17:08:37 -05:00 committed by GitHub
parent 54468cb85b
commit 95b8d75e37
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 44 additions and 23 deletions

View File

@ -327,7 +327,7 @@ class Series(NDFrame):
self.to_string( self.to_string(
buf=buf, buf=buf,
name=self.name, name=True,
dtype=True, dtype=True,
min_rows=min_rows, min_rows=min_rows,
max_rows=max_rows, max_rows=max_rows,
@ -393,30 +393,46 @@ class Series(NDFrame):
else: else:
_buf = StringIO() _buf = StringIO()
# Create repr of fake series without name, length, dtype summary if num_rows == 0:
temp_series.to_string( # Empty series are rendered differently than
buf=_buf, # series with items. We can luckily use our
na_rep=na_rep, # example series in this case.
float_format=float_format, temp_series.head(0).to_string(
header=header, buf=_buf,
index=index, na_rep=na_rep,
length=False, float_format=float_format,
dtype=False, header=header,
name=False, index=index,
max_rows=max_rows, length=length,
) dtype=dtype,
name=name,
max_rows=max_rows,
)
else:
# Create repr of fake series without name, length, dtype summary
temp_series.to_string(
buf=_buf,
na_rep=na_rep,
float_format=float_format,
header=header,
index=index,
length=False,
dtype=False,
name=False,
max_rows=max_rows,
)
# Create the summary # Create the summary
footer = [] footer = []
if name and self.name is not None: if name and self.name is not None:
footer.append(f"Name: {self.name}") footer.append(f"Name: {self.name}")
if length and len(self) > max_rows: if length and len(self) > max_rows:
footer.append(f"Length: {len(self.index)}") footer.append(f"Length: {len(self.index)}")
if dtype: if dtype:
footer.append(f"dtype: {temp_series.dtype}") footer.append(f"dtype: {temp_series.dtype}")
if footer: if footer:
_buf.write(f"\n{', '.join(footer)}") _buf.write(f"\n{', '.join(footer)}")
if buf is None: if buf is None:
result = _buf.getvalue() result = _buf.getvalue()

View File

@ -39,3 +39,8 @@ class TestSeriesRepr(TestData):
ed_repr = repr(ed_s) ed_repr = repr(ed_s)
assert pd_repr == ed_repr assert pd_repr == ed_repr
def test_repr_empty_series(self):
pd_s = self.pd_flights()["Carrier"].head(0)
ed_s = ed.Series(ES_TEST_CLIENT, FLIGHTS_INDEX_NAME, "Carrier").head(0)
assert repr(pd_s) == repr(ed_s)