Jeremy Live commited on
Commit
8304537
·
1 Parent(s): d5a1ba3
Files changed (1) hide show
  1. app.py +29 -9
app.py CHANGED
@@ -219,22 +219,42 @@ PLOT_FILENAME = 'generated_plot.png'
219
 
220
  # Helper functions for data processing
221
  def safe_get_column(df, column):
 
 
 
 
 
 
 
222
  # Try exact match first
223
  if column in df.columns:
224
  return df[column]
 
225
  # Try case-insensitive match
226
- col_lower = column.lower()
227
- for col in df.columns:
228
- if col.lower() == col_lower:
229
- return df[col]
 
 
 
 
230
  # If not found, try common variations
231
  variations = {
232
- 'close': ['Close', 'Adj Close', 'close', 'adj close', 'CLOSE'],
233
- 'adj close': ['Adj Close', 'adj close', 'ADJ CLOSE', 'Close', 'close', 'CLOSE']
234
  }
235
- for var in variations.get(column.lower(), []):
236
- if var in df.columns:
237
- return df[var]
 
 
 
 
 
 
 
 
238
  # If still not found, raise a helpful error
239
  raise KeyError(f"Column '{column}' not found in DataFrame. Available columns: {list(df.columns)}")
240
 
 
219
 
220
  # Helper functions for data processing
221
  def safe_get_column(df, column):
222
+ # Handle case where column is a tuple (e.g., from multi-index)
223
+ if isinstance(column, tuple):
224
+ column = column[0] # Take the first element of the tuple
225
+
226
+ # Convert column to string in case it's not
227
+ column = str(column)
228
+
229
  # Try exact match first
230
  if column in df.columns:
231
  return df[column]
232
+
233
  # Try case-insensitive match
234
+ try:
235
+ col_lower = column.lower()
236
+ for col in df.columns:
237
+ if str(col).lower() == col_lower:
238
+ return df[col]
239
+ except (AttributeError, TypeError):
240
+ pass # Skip case-insensitive matching if not applicable
241
+
242
  # If not found, try common variations
243
  variations = {
244
+ 'close': ['Close', 'Adj Close', 'close', 'adj close', 'CLOSE', 'Adj. Close'],
245
+ 'adj close': ['Adj Close', 'adj close', 'ADJ CLOSE', 'Close', 'close', 'CLOSE', 'Adj. Close']
246
  }
247
+
248
+ for var_list in variations.values():
249
+ for var in var_list:
250
+ if var in df.columns:
251
+ return df[var]
252
+
253
+ # If still not found, try to find any column containing 'close'
254
+ for col in df.columns:
255
+ if 'close' in str(col).lower():
256
+ return df[col]
257
+
258
  # If still not found, raise a helpful error
259
  raise KeyError(f"Column '{column}' not found in DataFrame. Available columns: {list(df.columns)}")
260