Skip to content

Commit a99b701

Browse files
committed
BUG: memory_usage method with deep of StringArray is wrong
1 parent 3d4f9dc commit a99b701

File tree

2 files changed

+14
-0
lines changed

2 files changed

+14
-0
lines changed

pandas/core/arrays/string_.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,12 @@ def value_counts(self, dropna=False):
289289

290290
return value_counts(self._ndarray, dropna=dropna).astype("Int64")
291291

292+
def memory_usage(self, deep=False):
293+
result = self._ndarray.nbytes
294+
if deep:
295+
return result + lib.memory_usage_of_objects(self._ndarray)
296+
return result
297+
292298
# Override parent because we have different return types.
293299
@classmethod
294300
def _create_arithmetic_method(cls, op):

pandas/tests/extension/test_string.py

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,14 @@ class TestMethods(base.BaseMethodsTests):
8585
def test_value_counts(self, all_data, dropna):
8686
return super().test_value_counts(all_data, dropna)
8787

88+
def test_memory_usage(self, data):
89+
# GH 33963
90+
series = pd.Series(data, dtype="string")
91+
total_usage = series.memory_usage(index=True)
92+
non_index_usage = series.memory_usage(index=False)
93+
index_usage = series.index.memory_usage()
94+
assert total_usage == non_index_usage + index_usage
95+
8896

8997
class TestCasting(base.BaseCastingTests):
9098
pass

0 commit comments

Comments
 (0)