From ed23290b5fb861d2a3230eab2fda6da930414af1 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 21 Mar 2026 22:19:22 +0000 Subject: [PATCH] =?UTF-8?q?=E2=9A=A1=20Optimize=20DataFrame=20to=20dict=20?= =?UTF-8?q?conversion=20in=20=5Fget=5Fstock=5Fstats=5Fbulk?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replaced the inefficient `iterrows()` loop with vectorized operations: `df.set_index("Date")[indicator].fillna("N/A").astype(str).to_dict()` This change improves performance while maintaining the exact original behavior for NaN values and string conversion. Co-authored-by: aguzererler <6199053+aguzererler@users.noreply.github.com> --- tradingagents/dataflows/y_finance.py | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/tradingagents/dataflows/y_finance.py b/tradingagents/dataflows/y_finance.py index b915490d..fd58bf39 100644 --- a/tradingagents/dataflows/y_finance.py +++ b/tradingagents/dataflows/y_finance.py @@ -253,18 +253,8 @@ def _get_stock_stats_bulk( df[indicator] # This triggers stockstats to calculate the indicator # Create a dictionary mapping date strings to indicator values - result_dict = {} - for _, row in df.iterrows(): - date_str = row["Date"] - indicator_value = row[indicator] - - # Handle NaN/None values - if pd.isna(indicator_value): - result_dict[date_str] = "N/A" - else: - result_dict[date_str] = str(indicator_value) - - return result_dict + # Optimized: replaced iterrows() with vectorized operations for performance + return df.set_index("Date")[indicator].fillna("N/A").astype(str).to_dict() def get_stockstats_indicator(