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

将字典转换为面板数据时出现‘str’无法转为整数错误求助

解决字典转面板数据时的'str' object cannot be interpreted as an integer报错

你这情况我之前也碰到过,就是字典层级搞混了加上类型转换的问题,咱们一步步捋清楚:

报错的核心原因

  1. int(ii)的类型转换错误:你想把ii转成整数,但ii实际是字符串——要么是像'AAPL'这种字母组成的代码,要么是'2023-10-01'这种带横杠的日期,这两种字符串都没法直接转成整数,自然就报错了。
  2. code列赋值逻辑错了:item[ii]是一整个包含日期和指标的字典,你直接把它赋值给code列,结果就是每个单元格都是一个字典,完全不是面板数据该有的样子。

修正后的代码

假设你的原始字典结构和参考文章一致(也就是data是一个列表,每个元素是{代码: {日期: {指标: 值}}}这样的嵌套字典),那修正后的代码应该是这样:

import pandas as pd

appended_data = pd.DataFrame()
for item in data:
    # 遍历每个代码及其对应的日期-指标数据
    for code, date_metrics in item.items():
        # 以日期为行、指标为列生成DataFrame
        df = pd.DataFrame.from_dict(date_metrics, orient='index')
        # 把日期索引转成普通列,命名为date
        df.reset_index(inplace=True)
        df.rename(columns={'index': 'date'}, inplace=True)
        # 给当前所有行添加对应的代码
        df['code'] = code
        # 合并到总数据中,ignore_index避免索引冲突
        appended_data = appended_data.append(df, ignore_index=True)

# 可选操作:把date列转成日期类型,方便后续时间序列处理
appended_data['date'] = pd.to_datetime(appended_data['date'])

# 转成你需要的字典格式
dic = appended_data.to_dict(orient='records')

关键修复点说明

  • 去掉了强行转整数的操作:直接保留日期字符串,或者转成datetime类型(更适合面板数据的时间操作)。
  • 明确了字典层级:外层键是code(比如股票代码),内层是该代码对应的所有日期指标数据,这样每个行都能正确关联到对应的代码。
  • 把索引转成列:用reset_index()把原来作为索引的日期转成普通列,这是面板数据的标准格式——每一行代表一个“代码-日期”的观测值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:46:14