fix: handle single-ticker yahoo panels

This commit is contained in:
2026-04-18 00:03:07 +08:00
parent 3abc51e3e3
commit 1edce83430
2 changed files with 29 additions and 6 deletions

View File

@@ -63,10 +63,11 @@ def _download(tickers: list[str], start: str, end: str | None = None,
result = {}
for field in fields:
if field in raw.columns.get_level_values(0) if isinstance(raw.columns, pd.MultiIndex) else field in raw.columns:
if len(tickers) > 1:
result[field] = raw[field]
selected = raw[field]
if isinstance(selected, pd.Series):
result[field] = selected.to_frame(name=tickers[0])
else:
result[field] = raw[field].to_frame(name=tickers[0])
result[field] = selected
else:
result[field] = pd.DataFrame()
return result
@@ -83,10 +84,11 @@ def _download_period(tickers: list[str], period: str,
result = {}
for field in fields:
if field in raw.columns.get_level_values(0) if isinstance(raw.columns, pd.MultiIndex) else field in raw.columns:
if len(tickers) > 1:
result[field] = raw[field]
selected = raw[field]
if isinstance(selected, pd.Series):
result[field] = selected.to_frame(name=tickers[0])
else:
result[field] = raw[field].to_frame(name=tickers[0])
result[field] = selected
else:
result[field] = pd.DataFrame()
return result