auto-sync: 2026-04-17 20:23:28
This commit is contained in:
@@ -44,21 +44,51 @@ class AStockListFetcher:
|
|||||||
# 使用akshare获取A股股票列表
|
# 使用akshare获取A股股票列表
|
||||||
stocks_df = self.ak.stock_zh_a_spot()
|
stocks_df = self.ak.stock_zh_a_spot()
|
||||||
logger.info(f"成功获取A股股票列表,共 {len(stocks_df)} 只股票")
|
logger.info(f"成功获取A股股票列表,共 {len(stocks_df)} 只股票")
|
||||||
|
logger.info(f"返回列名: {list(stocks_df.columns)}")
|
||||||
|
|
||||||
# 整理列名,选择需要的字段
|
# 整理列名,选择需要的字段
|
||||||
# akshare返回的列名:代码,名称,最新价,涨跌幅,涨跌额,买入,卖出,成交量,成交额,开盘,最高,最低,昨收
|
# 不同版本akshare返回列名可能有差异,做兼容处理
|
||||||
result_df = pd.DataFrame()
|
result_df = pd.DataFrame()
|
||||||
result_df['code'] = stocks_df['代码']
|
|
||||||
result_df['name'] = stocks_df['名称']
|
# 检查列名,兼容不同版本
|
||||||
result_df['current_price'] = stocks_df['最新价']
|
column_mapping = {
|
||||||
result_df['change_percent'] = stocks_df['涨跌幅']
|
'代码': 'code',
|
||||||
result_df['change_amount'] = stocks_df['涨跌额']
|
'名称': 'name',
|
||||||
result_df['volume'] = stocks_df['成交量']
|
'最新价': 'current_price',
|
||||||
result_df['amount'] = stocks_df['成交额']
|
'涨跌幅': 'change_percent',
|
||||||
result_df['open'] = stocks_df['开盘']
|
'涨跌额': 'change_amount',
|
||||||
result_df['high'] = stocks_df['最高']
|
'成交量': 'volume',
|
||||||
result_df['low'] = stocks_df['最低']
|
'成交额': 'amount',
|
||||||
result_df['pre_close'] = stocks_df['昨收']
|
'开盘': 'open',
|
||||||
|
'最高': 'high',
|
||||||
|
'最低': 'low',
|
||||||
|
'昨收': 'pre_close'
|
||||||
|
}
|
||||||
|
|
||||||
|
for source_col, target_col in column_mapping.items():
|
||||||
|
if source_col in stocks_df.columns:
|
||||||
|
result_df[target_col] = stocks_df[source_col]
|
||||||
|
|
||||||
|
# 如果列名是中文但不同命名方式,尝试其他可能
|
||||||
|
if result_df.empty:
|
||||||
|
logger.warning("默认列名匹配失败,尝试其他列名匹配...")
|
||||||
|
# 可能的其他列名
|
||||||
|
alt_mapping = {
|
||||||
|
'symbol': 'code',
|
||||||
|
'name': 'name',
|
||||||
|
'price': 'current_price',
|
||||||
|
'changepercent': 'change_percent',
|
||||||
|
'change': 'change_amount',
|
||||||
|
'volume': 'volume',
|
||||||
|
'amount': 'amount',
|
||||||
|
'open': 'open',
|
||||||
|
'high': 'high',
|
||||||
|
'low': 'low',
|
||||||
|
'settlement': 'pre_close'
|
||||||
|
}
|
||||||
|
for source_col, target_col in alt_mapping.items():
|
||||||
|
if source_col in stocks_df.columns:
|
||||||
|
result_df[target_col] = stocks_df[source_col]
|
||||||
|
|
||||||
else:
|
else:
|
||||||
# AKShare不可用,生成模拟数据
|
# AKShare不可用,生成模拟数据
|
||||||
|
|||||||
Reference in New Issue
Block a user