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

Python遍历Edgar filings报错,求提取10-K的Item 1C文本至DataFrame方案

解决Edgartools遍历报错及提取10-K Item 1C的实操方案

先搞定遍历Filing对象的报错问题

你循环时出现的“'Filing'对象无法解释为整数”,大概率是循环写法不对。edgartools返回的filings是Filing实例的集合,直接遍历就行,不用搞索引那套。要获取所有文件URL,用列表推导式最直接:

# 假设你已经获取到filings对象
filing_urls = [filing.url for filing in filings]

这样就能得到完整的URL列表,不会触发类型错误。

提取Item 1C并关联到DataFrame

接下来用sec-parsers处理每个10-K,提取Item 1C内容,再和你的filings_df关联:

  1. 先给filings_df加一个年份列,从申报日期里提取:
# 假设你的申报日期列叫 'filing_date',先转成datetime类型
filings_df['filing_date'] = pd.to_datetime(filings_df['filing_date'])
filings_df['year'] = filings_df['filing_date'].dt.year
  1. 遍历每个URL,解析10-K并提取Item 1C,同时记录对应的CIK和年份:
from sec_parsers import TenKParser

# 准备存储结果的列表
item_1c_data = []

for idx, filing in enumerate(filings):
    cik = filings_df.iloc[idx]['cik']  # 对应DataFrame里的CIK
    year = filings_df.iloc[idx]['year']
    try:
        parser = TenKParser(filing.url)
        ten_k = parser.parse()
        # 提取Item 1C,注意key可能是'1C'或者'Item 1C',根据实际情况调整
        item_1c_text = ten_k.get('1C', {}).get('text', '')
        item_1c_data.append({
            'cik': cik,
            'year': year,
            'item_1c': item_1c_text
        })
    except Exception as e:
        print(f"处理{cik} {year}的10-K时出错: {e}")
        item_1c_data.append({
            'cik': cik,
            'year': year,
            'item_1c': None
        })
  1. 把提取的结果转成DataFrame,再和原filings_df关联:
item_1c_df = pd.DataFrame(item_1c_data)
# 用CIK和年份做关联键
filings_df = filings_df.merge(item_1c_df, on=['cik', 'year'], how='left')

注意事项

  • 要是sec-parsers解析时找不到Item 1C,检查下10-K的结构,有些公司可能把Item 1C放在不同的节点下,可能需要调整key的取值。
  • 批量处理时记得加异常捕获,避免单个文件解析失败导致整个程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 19:12:39