Pandas如何使用for循环合并多个DataFrame?
方案1:从读文件阶段就一步到位(最简洁,无需额外生成字典、单独变量)
直接用列表存储读取到的每一年DataFrame,最后一次性拼接:
import pandas as pd file_dir = '../VentureXpert/Raw/county_csv/' df_list = [] for year in range(1996,2020): df = pd.read_csv(file_dir + f"{year}.csv", header=None) df.columns =['st-county' ,'numb of comp','pct of comp','inv sum($mil)','pct of inv','avg per comp','med per comp','year'] df_list.append(df) df_final = pd.concat(df_list, ignore_index=True)
你原有代码里的copy.deepcopy完全不需要,pd.read_csv返回的已经是独立的DataFrame对象,多余的深拷贝反而会增加不必要的内存开销。
方案2:如果已经生成了dict_of_df不想修改前面的代码
直接取字典的所有值传入concat即可,不需要手动提取每个变量,也不需要额外循环:
df_final = pd.concat(dict_of_df.values(), ignore_index=True)
Python 3.7及以上版本默认会保留字典的插入顺序,你生成字典时是按年份从小到大插入的,所以直接取values的拼接顺序和你手动写的顺序完全一致,不会出现顺序错乱问题。
内容的提问来源于stack exchange,提问作者DAEHYUN KIM
相关产品推荐
相关产品推荐

