From f2fb3810687716375a754d898c9ef89ca5c4bd5b Mon Sep 17 00:00:00 2001 From: Henry Date: Tue, 14 May 2024 15:27:20 +0200 Subject: [PATCH] :bug: update to make it pandas 2 compatible --- src/njab/pandas/__init__.py | 6 +++--- test/test_pandas.py | 8 ++++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/src/njab/pandas/__init__.py b/src/njab/pandas/__init__.py index b0c1505..5780abb 100644 --- a/src/njab/pandas/__init__.py +++ b/src/njab/pandas/__init__.py @@ -122,8 +122,8 @@ def combine_value_counts(X: pd.DataFrame, dropna=True) -> pd.DataFrame: """ """ """ - _df = pd.DataFrame() + freq_targets = list() for col in X.columns: - _df = _df.join(X[col].value_counts(dropna=dropna), how='outer') - freq_targets = _df.sort_index() + freq_targets.append(X[col].value_counts(dropna=dropna)) + freq_targets = pd.concat(freq_targets, axis=1, sort=True) return freq_targets diff --git a/test/test_pandas.py b/test/test_pandas.py index b117f72..0db68dc 100644 --- a/test/test_pandas.py +++ b/test/test_pandas.py @@ -1,4 +1,5 @@ import pandas as pd + import njab @@ -6,3 +7,10 @@ def test_thousands_display(): njab.pandas.set_pandas_options() s = pd.Series([1_000_000]) assert str(s)[4:13] == '1,000,000' + + +def test_combine_value_counts(): + df = pd.DataFrame({'a': [1, 2, 2, 2, 3, 3, 3], 'b': [1, 1, 1, 2, 2, 3, 3]}) + exp = {'a': {1: 1, 2: 3, 3: 3}, 'b': {1: 3, 2: 2, 3: 2}} + act = njab.pandas.combine_value_counts(df).to_dict() + assert act == exp