如何合并R语言循环生成的未知命名多个数据框
解决方案:合并按ID拆分的数据框
方法1:合并已生成的单个ID数据框
如果你已经通过循环生成了df11111、df11112这类数据框,可以按以下步骤合并:
- 从全局变量中筛选出符合
df+数字命名规则的数据框 - 用
pd.concat()完成合并
示例代码:
import pandas as pd # 收集所有符合命名规则的数据框 id_dfs = [var for name, var in globals().items() if name.startswith('df') and name[2:].isdigit()] # 合并为大型数据框,ignore_index重置索引避免重复 merged_df = pd.concat(id_dfs, ignore_index=True)
方法2:拆分时直接存入列表(更推荐)
没必要生成大量单独命名的数据框,拆分阶段就把每个ID的子数据框存入列表,后续直接合并,避免全局变量冗余:
示例代码:
import pandas as pd # 提取Total_df中的唯一ID unique_ids = Total_df['ID'].unique() # 初始化列表存储子数据框 id_df_list = [] for uid in unique_ids: # 筛选单个ID的数据并存入列表 sub_df = Total_df[Total_df['ID'] == uid].copy() id_df_list.append(sub_df) # 合并为大型数据框 merged_df = pd.concat(id_df_list, ignore_index=True)
补充说明
pd.concat()的ignore_index=True会重置合并后的数据框索引,避免原索引重复冲突- 如果子数据框列名不一致,可通过
join参数调整合并规则:比如join='inner'只保留所有子数据框共有的列
内容的提问来源于stack exchange,提问作者dandy
相关产品推荐
相关产品推荐

