如何在函数内将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
相关产品推荐
相关产品推荐

