diff --git a/.Jules/bolt.md b/.Jules/bolt.md new file mode 100644 index 00000000..fbe4ec43 --- /dev/null +++ b/.Jules/bolt.md @@ -0,0 +1 @@ +## 2026-03-31 - Replace slow DataFrame .iterrows() loop with .apply() | Learning: Iterating through pandas DataFrames using .iterrows() is notoriously slow (essentially a Python loop over rows), whereas vectorization or .apply() is significantly faster and more idiomatic for pandas. | Action: Use .apply() with axis=1 for applying complex operations to DataFrame rows instead of explicit iteration. diff --git a/monitoring/conversation_recommendation_optimizer.py b/monitoring/conversation_recommendation_optimizer.py index 05cb405c..5c59e331 100644 --- a/monitoring/conversation_recommendation_optimizer.py +++ b/monitoring/conversation_recommendation_optimizer.py @@ -164,12 +164,10 @@ def _establish_quality_benchmarks( benchmarks = {} # Calculate quality scores for all conversations - quality_scores = [] - for _, conv in conversations.iterrows(): - score = self._calculate_conversation_quality_score(conv) - quality_scores.append(score) - - conversations["quality_score"] = quality_scores + # ⚡ Bolt: Replaced slow .iterrows() loop with .apply() for significant performance gain + conversations["quality_score"] = conversations.apply( + self._calculate_conversation_quality_score, axis=1 + ) # Get top 10% as benchmark top_10_percent = conversations.nlargest(