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

freeCodeCamp Python算法交易课程:打印DataFrame重复内容求助

解决DataFrame输出重复内容的问题

看起来你在freeCodeCamp的算法交易课程里遇到了DataFrame输出重复的问题,我来帮你分析一下可能的原因和解决办法:

可能的问题原因

  • Ticker列表存在重复值:你的stocks['Ticker'][:5]里可能包含重复的股票代码,导致循环中重复添加了相同的股票数据到DataFrame中。可以先打印这个切片确认:
    print(stocks['Ticker'][:5])
    
  • 低效的append()用法:虽然append()在旧版pandas中可以运行,但它每次都会返回一个新的DataFrame,循环中反复调用不仅效率低,也容易因为意外重复执行(比如交互式环境中多次运行代码块)导致重复内容。

修复方案

推荐你改用先收集数据到列表,再一次性生成DataFrame的方式,这既符合现代pandas的最佳实践(append()已在pandas 2.0+中被弃用),也能从根源避免重复添加的问题:

import numpy as np
import pandas as pd
import requests
import xlsxwriter
import math

# 读取股票列表
stocks = pd.read_csv(r'XXXXXXXXXXXXXXXXXXXXXXX.csv')
from secret import IEX_CLOUD_API_TOKEN

my_columns = ['Ticker','Stock Price','Market Capitalisation','Number of Shares to Buy']
# 先创建空列表存储每行数据
data_rows = []

# 遍历前5个去重后的Ticker
for stock in stocks['Ticker'][:5].drop_duplicates():
    api_url = f'https://sandbox.iexapis.com/stable/stock/{stock}/quote?token={IEX_CLOUD_API_TOKEN}'
    data = requests.get(api_url).json()
    # 将单条股票数据加入列表
    data_rows.append([
        stock,
        data['latestPrice'],
        data['marketCap'],
        'N/A'
    ])

# 一次性生成最终DataFrame
final_dataframe = pd.DataFrame(data_rows, columns=my_columns)
print(final_dataframe)

额外优化建议

  1. 全局去重:如果你的股票列表本身存在大量重复Ticker,建议先对整个列表去重,避免不必要的API请求:
    unique_tickers = stocks['Ticker'].drop_duplicates()
    for stock in unique_tickers[:5]:
        # 后续代码不变
    
  2. 错误处理:添加try-except块处理API请求失败的情况,避免单只股票出错导致整个循环中断:
    for stock in unique_tickers[:5]:
        try:
            api_url = f'https://sandbox.iexapis.com/stable/stock/{stock}/quote?token={IEX_CLOUD_API_TOKEN}'
            data = requests.get(api_url).json()
            data_rows.append([stock, data['latestPrice'], data['marketCap'], 'N/A'])
        except Exception as e:
            print(f"获取{stock}数据失败: {e}")
    

这样修改后,你应该能得到和课程示例一致的正确输出了。

内容的提问来源于stack exchange,提问作者SpicyCoral

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:53:55