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

如何在实时DataFrame中移除NaN值并合并上下行数据

问题根因

你使用pd.concat([df1, df])时默认是垂直行堆叠拼接,两个待拼接的DataFrame列完全不重叠:df1只有Datetime列,df只有OHLC相关列,因此拼接后会生成两行数据:第一行仅Datetime有值,其余OHLC列全为NaN;第二行仅OHLC列有值,Datetime列为NaN。你后续用分组去NaN的思路完全是走偏了,本质是拼接方式用错了。

最优解决方法

完全不需要创建两个DataFrame再拼接,直接给接口返回的行情DataFrame新增Datetime列即可,修改代码如下:

while (True):
    # 获取印度标准时间
    IST = pytz.timezone('Asia/Kolkata')
    datetime_ist = datetime.now(IST)
    Datetime = datetime_ist.strftime('%Y/%m/%d %H:%M:%S')

    # 调用接口拿行情数据
    exchange = "NSE"
    tradingsymbol = "SBIN-EQ"
    symboltoken = 3045
    a = SmartApi.ltpData("NSE", "SBIN-EQ", "3045")

    # 直接构造完整DataFrame,无需拼接
    df = pd.DataFrame([a['data']])
    df['Datetime'] = Datetime

    # 后续直接用df即可,没有任何NaN值
    display(df)

如果你坚持要拼接两个DataFrame

需要指定按列水平拼接,给pd.concat加axis=1参数即可:

df2 = pd.concat([df1, df], axis=1)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:54:02