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

API拉取多层级利润表数据转置DataFrame优化方案问询

优化纳斯达克NKE利润表API数据格式的优雅方案

我通过API拉取纳斯达克NKE公司的年度利润表多层级列表数据,期望将其格式化为以利润表项目作为列、会计期间作为行的DataFrame。现有代码已接近目标,但存储会计期间的第一列未被正确识别,虽可手动调整实现需求,仍希望获得更优雅的解决方案。

原代码

library('httr')
library('tidyr')

 url4 <- "https://api.nasdaq.com/api/company/NKE/financials?frequency=1"
  
  response_fin_ann <- GET(url4, add_headers(`User-Agent`= "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0"
                                           ,`Accept-Language`= "en-US,en;q=0.5")) 

api_con_fin_ann <- content(response_fin_ann)

api_con_ann_fmt<- tibble(asOf = api_con_fin_ann$data$incomeStatementTable$asOf) %>%
  reframe(rows = lapply(api_con_fin_ann$data$incomeStatementTable$rows, as.data.frame)) %>%
  tidyr::unnest(rows)

cols<-api_con_fin_ann$data$incomeStatementTable$headers
colnames(api_con_ann_fmt) <- cols

tst3 <- as.data.frame(t(api_con_ann_fmt))
colnames(tst3) <- tst3[1,]
tst3<-tst3[-1, ]

优雅解决方案

优化思路

  • 直接从API返回的结构化数据中提取会计期间、利润表项目及对应数据,避免转置后手动调整行/列名的冗余操作
  • 利用dplyr和tidyr的组合完成数据重塑,逻辑更清晰,代码更简洁

优化后代码

library(httr)
library(dplyr)
library(tidyr)

# 拉取NKE年度利润表API数据
url4 <- "https://api.nasdaq.com/api/company/NKE/financials?frequency=1"
response_fin_ann <- GET(
  url4,
  add_headers(
    `User-Agent` = "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/119.0",
    `Accept-Language` = "en-US,en;q=0.5"
  )
)

api_con_fin_ann <- content(response_fin_ann)
income_table <- api_con_fin_ann$data$incomeStatementTable

# 构造目标格式的DataFrame
result_df <- tibble(会计期间 = income_table$asOf) %>%
  # 将每个利润表项目转为单独的列
  bind_cols(
    map_dfc(income_table$rows, ~tibble(!!.x$label := .x$value))
  ) %>%
  # 将会计期间设为行索引
  column_to_rownames(var = "会计期间")

print(result_df)

代码说明

  1. 数据提取:直接从API返回的incomeStatementTable中拆分出会计期间asOf和各利润表项目的rows列表
  2. 列构造:用map_dfc遍历rows列表,将每个项目的标签设为列名、对应数据设为列值,直接绑定到会计期间列后
  3. 行索引设置:通过column_to_rownames一步完成会计期间到行索引的转换,无需手动处理转置后的行/列名

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 04:15:24