You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 04:55:22