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"
+ )