diff --git a/src/ydata_profiling/profile_report.py b/src/ydata_profiling/profile_report.py index 79b94aa00..4825a4567 100644 --- a/src/ydata_profiling/profile_report.py +++ b/src/ydata_profiling/profile_report.py @@ -450,7 +450,9 @@ def encode_it(o: Any) -> Any: return [encode_it(v) for v in o] elif isinstance(o, set): return {encode_it(v) for v in o} - elif isinstance(o, (pd.DataFrame, pd.Series)): + elif isinstance(o, pd.Series): + return encode_it(o.to_list()) + elif isinstance(o, pd.DataFrame): return encode_it(o.to_dict(orient="records")) elif isinstance(o, np.ndarray): return encode_it(o.tolist()) diff --git a/tests/issues/test_issue1529.py b/tests/issues/test_issue1529.py new file mode 100644 index 000000000..e43199430 --- /dev/null +++ b/tests/issues/test_issue1529.py @@ -0,0 +1,34 @@ +""" +Test for issue 1529: +https://github.com/ydataai/ydata-profiling/issues/1529 +""" +import json + +import pandas as pd + +from ydata_profiling import ProfileReport + + +def test_issue1529(): + previous_dataset = pd.DataFrame( + data=[(1000, 42), (900, 30), (1500, 40), (1800, 38)], + columns=["rent_per_month", "total_area"], + ) + current_dataset = pd.DataFrame( + data=[(5000, 350), (9000, 600), (5000, 400), (3500, 500), (6000, 600)], + columns=["rent_per_month", "total_area"], + ) + previous_dataset_report = ProfileReport( + previous_dataset, title="Previous dataset report" + ) + current_dataset_report = ProfileReport( + current_dataset, title="Current dataset report" + ) + comparison_report = previous_dataset_report.compare(current_dataset_report) + json_str = comparison_report.to_json() + compare_dict = json.loads(json_str) + assert compare_dict is not None and len(compare_dict) > 0 + assert ( + compare_dict["analysis"]["title"] + == "Comparing Previous dataset report and Current dataset report" + )