Python股票数据处理问题:DataFrame调用错误及数据联动需求
解决方案
1. 修复pd.DataFrame调用错误并合并多标的期货数据
常见的pd.DataFrame报错原因是传入参数格式不符合要求(比如传入单个标量而非可迭代对象、字典结构错误等)。以下是修正后的代码逻辑,同时实现多标的数据合并:
import pandas as pd def get_futures_data(symbol): # 替换为实际的期货数据获取逻辑 data = { 'date': ['2024-01-01', '2024-01-02'], 'symbol': [symbol, symbol], 'open': [100, 102], 'close': [105, 103] } # 确保传入pd.DataFrame的是可迭代结构(字典、列表等) return pd.DataFrame(data) # 初始化空表用于合并数据 all_data = pd.DataFrame() # 后续会替换为NSE接口获取的标的列表 temp_symbols = ['TATASTEEL', 'RELIANCE', 'INFY'] # 循环获取每个标的数据并合并 for sym in temp_symbols: single_df = get_futures_data(sym) all_data = pd.concat([all_data, single_df], ignore_index=True) print(all_data)
核心要点:
- 确保
pd.DataFrame入参为字典、列表等可迭代结构,避免传入单个值触发报错 - 使用
pd.concat()循环合并单标的数据,ignore_index=True重置索引避免重复
2. 从NSE接口获取symbol列表并联动获取数据
以下是获取NSE标的列表,并将其作为第一段代码中变量a的输入,实现联动的代码:
import requests import pandas as pd def get_nse_symbols(): # 调用NSE公开接口获取标的列表,替换为实际可用接口 url = "https://www.nseindia.com/api/equity-stockIndices?index=NIFTY%2050" headers = {"User-Agent": "Mozilla/5.0"} response = requests.get(url, headers=headers) data = response.json() # 提取接口返回的symbol字段生成列表 symbols = [stock['symbol'] for stock in data['data']] return symbols # 获取NSE标的列表作为变量a a = get_nse_symbols() # 复用数据获取与合并逻辑 all_futures_data = pd.DataFrame() for sym in a: single_df = get_futures_data(sym) all_futures_data = pd.concat([all_futures_data, single_df], ignore_index=True) print(all_futures_data)
核心要点:
- 请求NSE接口时添加
User-Agent头,避免被反爬拦截 - 提取接口返回的
symbol字段生成列表,直接传入数据获取循环实现联动
内容的提问来源于stack exchange,提问作者Brijesh Chaurasia
相关产品推荐
相关产品推荐

