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

如何合并yfinance实时拉取多标的时拆分在多行的最新K线数据

yfinance多标的实时K线拆分多行合并方案

核心逻辑

该拆分问题是因为不同标的的实时数据推送时间存在微小差异,yfinance会为每个不同的推送时间生成独立行,仅填充对应推送标的的指标值。不需要关心时间差的情况下,直接提取每列最新的非空值合并即可。

实现代码

前置依赖

你需要已经拉取到原始yfinance返回的MultiIndex列DataFrame,示例拉取代码如下:

import yfinance as yf
import pandas as pd

# 最多支持10个标的,按需替换即可
target_tickers = ["BARC.L", "BKG.L"]
df = yf.download(
    tickers=target_tickers,
    period="1d",
    interval="1m",
    group_by="column"
)

合并处理代码

# 方案1:轻量快速实现,适合数据量不大的场景
# 前向填充所有非空值到后续行,取最后一行即为全标的最新数据
latest_merged = df.ffill().iloc[[-1]]
# 统一设置时间为所有数据的最新时间
latest_merged.index = [df.index.max()]

# 输出结果
print(latest_merged)

如果原始数据量很大,不需要填充全表,可以用以下方案直接提取每列最新非空值:

# 方案2:高性能实现,适合大尺寸原始表
latest_merged = df.apply(lambda col: col.dropna().iloc[-1] if not col.dropna().empty else pd.NA).to_frame().T
latest_merged.index = [df.index.max()]

效果验证

用你提供的示例数据处理后,输出结果如下:

Open                Volume      
                               BARC.L   BKG.L        BARC.L BKG.L
2021-11-11 08:07:10+00:00  194.539993  4326.0           0.0   0.0

完全符合合并所有最新数据到单行的需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:06:06