Skip to content

Commit d0d94fb

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

File tree

2 files changed

+13
-0
lines changed

2 files changed

+13
-0
lines changed

pandas/core/arrays/string_.py

+6
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

+7
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,13 @@ 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+
92+
assert 0 < series.nbytes <= series.memory_usage()
93+
assert 0 < series.nbytes <= series.memory_usage(deep=True)
94+
8895

8996
class TestCasting(base.BaseCastingTests):
9097
pass

0 commit comments

Comments
 (0)