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

Google Colab中pdr.get_data_tiingo报错:TypeError: concat()参数数量不符

解决pandas_datareader调用Tiingo接口的TypeError问题

在Google Colab执行以下代码获取台积电(TSM)股票数据时出现报错:

import pandas_datareader as pdr
import numpy as np

STOCK = pdr.get_data_tiingo('TSM', api_key='64dbe0a7e978cc2501fcc1e56aaf1935c63f78de')
STOCK = STOCK.reset_index(level=[0,1])
STOCK.index = STOCK['date']
STOCK_adj = STOCK.iloc[:, 7:12]
STOCK_adj.columns = ['Close', 'High', 'Low', 'Open', 'Volume']
STOCK_adj

报错核心信息:

TypeError: concat() takes 1 positional argument but 2 were given

完整错误回溯:

TypeError                                 Traceback (most recent call last)
<ipython-input-50-ca49edb453ba> in <cell line: 1>()
----> 1 STOCK = pdr.get_data_tiingo('TSM', api_key='64dbe0a7e978cc2501fcc1e56aaf1935c63f78de')
      2 STOCK = STOCK.reset_index(level=[0,1])
      3 STOCK.index = STOCK['date']
      4 STOCK_adj = STOCK.iloc[:, 7:12]
      5 STOCK_adj.columns = ['Close', 'High', 'Low', 'Open', 'Volume']

1 frames
/usr/local/lib/python3.10/dist-packages/pandas_datareader/data.py in get_data_tiingo(*args, **kwargs)
    118 
    119 def get_data_tiingo(*args, **kwargs):
---> 120     return TiingoDailyReader(*args, **kwargs).read()
    121 
    122 

/usr/local/lib/python3.10/dist-packages/pandas_datareader/tiingo.py in read(self)
    232             finally:
    233                 self.close()
---> 234         return pd.concat(dfs, self._concat_axis)
    235 
    236 

TypeError: concat() takes 1 positional argument but 2 were given

问题原因

这个错误是pandas_datareader旧版本与高版本pandas不兼容导致的:pandas 2.x及以上版本调整了pd.concat()的参数格式,而旧版pandas_datareader仍使用过时的位置参数传递方式,触发参数不匹配错误。

解决方案

方案1:升级pandas_datareader到最新版本

新版本已修复该兼容问题,在Colab中执行以下命令升级:

!pip install --upgrade pandas_datareader

升级完成后重新运行原代码即可正常获取数据。

方案2:直接调用Tiingo官方API(绕过pandas_datareader)

如果升级后仍有问题,或者不想依赖pandas_datareader,可直接通过Tiingo的REST API获取数据,示例代码如下:

import pandas as pd
import requests

# 替换为你的Tiingo API密钥
API_KEY = '64dbe0a7e978cc2501fcc1e56aaf1935c63f78de'
SYMBOL = 'TSM'

# 调用API获取每日股价数据
url = f'https://api.tiingo.com/tiingo/daily/{SYMBOL}/prices?token={API_KEY}'
response = requests.get(url)
data = response.json()

# 转换为DataFrame并调整格式
STOCK = pd.DataFrame(data)
STOCK['date'] = pd.to_datetime(STOCK['date'])
STOCK.set_index('date', inplace=True)

# 筛选并重命名所需列
STOCK_adj = STOCK[['close', 'high', 'low', 'open', 'volume']]
STOCK_adj.columns = ['Close', 'High', 'Low', 'Open', 'Volume']

# 查看结果
STOCK_adj

额外说明

  • 确保你的Tiingo API密钥有效,Tiingo提供免费调用额度,超出后需付费。
  • 直接调用API时可通过startDate和endDate参数指定数据范围,示例:
    url = f'https://api.tiingo.com/tiingo/daily/{SYMBOL}/prices?startDate=2023-01-01&endDate=2024-01-01&token={API_KEY}'
    

内容的提问来源于stack exchange,提问作者江軍緯

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 15:00:33