diff --git a/pandas/core/frame.py b/pandas/core/frame.py index 0437c479c9d81..dccc840f5affd 100644 --- a/pandas/core/frame.py +++ b/pandas/core/frame.py @@ -2231,7 +2231,7 @@ def _sizeof_fmt(num, size_qualifier): # returns size in human readable format for x in ['bytes', 'KB', 'MB', 'GB', 'TB']: if num < 1024.0: - return ("{num:3.1f}{size_q}" + return ("{num:3.1f}{size_q} " "{x}".format(num=num, size_q=size_qualifier, x=x)) num /= 1024.0 return "{num:3.1f}{size_q} {pb}".format(num=num, diff --git a/pandas/tests/frame/test_repr_info.py b/pandas/tests/frame/test_repr_info.py index 8fc6fef11798a..668613c494a47 100644 --- a/pandas/tests/frame/test_repr_info.py +++ b/pandas/tests/frame/test_repr_info.py @@ -5,6 +5,7 @@ from datetime import datetime, timedelta import re import sys +import textwrap from numpy import nan import numpy as np @@ -204,6 +205,25 @@ def test_info(self): frame.info() frame.info(verbose=False) + def test_info_memory(self): + # https://github.com/pandas-dev/pandas/issues/21056 + df = pd.DataFrame({'a': pd.Series([1, 2], dtype='i8')}) + buf = StringIO() + df.info(buf=buf) + result = buf.getvalue() + bytes = float(df.memory_usage().sum()) + + expected = textwrap.dedent("""\ + + RangeIndex: 2 entries, 0 to 1 + Data columns (total 1 columns): + a 2 non-null int64 + dtypes: int64(1) + memory usage: {} bytes + """.format(bytes)) + + assert result == expected + def test_info_wide(self): from pandas import set_option, reset_option io = StringIO()