使用for循环遍历列表合并DataFrame遇问题:仅生成最后一项结果
解决DataFrame合并仅保留最后一个结果的问题
你的代码存在两处关键问题,修正后即可正常合并所有元素对应的DataFrame:
1. 多余的列表append赋值操作
dfs.append(_data)是原地修改列表的操作,它的返回值是None,你写df = dfs.append(_data)完全没有意义,还会生成无效的None变量,但这并非只保留最后一个结果的核心原因。
2. 避免使用Python内置类型做变量名
list是Python的内置类型,用它做变量名会覆盖内置功能,建议改成base_list这类自定义名称。
修正后的代码
base_list = ["base1", "base2", "base3"] dfs = [] for x in base_list: _data = function(x) # 直接向列表追加DataFrame,无需赋值给变量 dfs.append(_data) df_master = pd.concat(dfs, ignore_index=True)
额外排查点:检查function的返回逻辑
如果修正后仍只保留最后一个结果,大概率是你的function(x)存在副作用——它每次返回的是同一个DataFrame实例,后续调用会覆盖之前的数据。需要确保function内部每次都通过pd.DataFrame(...)生成新的DataFrame对象,而非在原有对象上修改后返回。
内容的提问来源于stack exchange,提问作者user7446890
相关产品推荐
相关产品推荐

