如何合并通过for循环生成并存储在列表中的多个DataFrame?
合并多个DataFrame为单个DataFrame的解决方案
核心解决方法
你已经生成了包含12个两列DataFrame的列表df_export,只需用pandas的concat()方法就能将它们按行合并成单个DataFrame:
import pandas as pd # 合并列表中的所有DataFrame final_df = pd.concat(df_export, ignore_index=True)
pd.concat()会将列表内的所有DataFrame按行堆叠,生成你需要的包含[Category, Value]两列的完整数据。ignore_index=True会重置合并后DataFrame的索引,避免出现重复的索引值。
原代码优化建议
你的原代码在循环中每次都读取CSV文件,会造成不必要的IO开销,建议先一次性读取完整文件,再在循环中筛选数据:
import pandas as pd # 一次性读取完整文件,避免重复读取 df_full = pd.read_csv(file) df_export = [] def linear_reg_function(category): # 从完整数据中筛选指定类别 df_filtered = df_full[df_full['category_column'] == category] # 提取需要的两列 df1 = df_filtered[['category_column', 'value_column']] df_export.append(df1) # 遍历所有类别生成子DataFrame for category in category_list: linear_reg_function(category) # 合并得到最终结果 final_df = pd.concat(df_export, ignore_index=True)
原错误说明
你之前尝试用df_export = pd.DataFrame()转换列表,这只会创建一个空的DataFrame,并不会合并列表内的已有DataFrame,所以结果为空。
内容的提问来源于stack exchange,提问作者Doug Sack
相关产品推荐
相关产品推荐

