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

如何在函数内将DataFrame追加/合并到全局DataFrame中

解决方案

核心问题分析

你遇到的空DataFrame问题,大概率是未正确修改全局变量或concat后未重新赋值导致的。以下是具体修复步骤和代码示例:

1. 预先定义全局DataFrame

import pandas as pd

# 初始化空全局DataFrame
resultsDF = pd.DataFrame()

2. 修改爬虫函数实现追加逻辑

def getTicketPrices(IPLocation, X, Y):
    # ----------------------
    # 你的爬取逻辑(示例)
    # 生成以IPLocation为列名的DataFrame
    scraped_data = [150, 220, 300]  # 替换为实际爬取结果
    new_df = pd.DataFrame({IPLocation: scraped_data})
    # ----------------------

    # 声明使用全局变量resultsDF,否则会创建局部变量
    global resultsDF

    # 根据需求选择追加方式:
    # 方式1:按列扩展(每个IPLocation作为新列)
    resultsDF = pd.concat([resultsDF, new_df], axis=1)

    # 方式2:按行追加(同一列名的新数据,需确保new_df列名与resultsDF一致)
    # resultsDF = pd.concat([resultsDF, new_df], axis=0, ignore_index=True)

    return resultsDF

关键注意事项

  • 必须用global关键字:如果函数内不声明global resultsDF,Python会将其视为局部变量,修改后不会影响全局的空DataFrame。
  • concat需重新赋值:Pandas的concat方法不会原地修改DataFrame,必须将返回结果重新赋值给resultsDF才能更新全局变量。
  • 对齐结构:如果是按列追加,确保各次爬取的DataFrame行数一致(否则会出现NaN值);如果是按行追加,确保新生成的DataFrame列名与全局DataFrame匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 03:25:17