如何基于索引合并列表型DataFrame以生成目标DataFrame?
解决方案
1. 先模拟测试数据(方便复现)
import pandas as pd # 构造DF1:包含两个DataFrame的列表 df_a = pd.DataFrame({'A': [1, 2], 'B': [3, 4]}) df_b = pd.DataFrame({'A': [5, 6], 'B': [7, 8]}) DF1 = [df_a, df_b] # 构造DF2:对应每个DataFrame的标识值 DF2 = ['NY', 'FL']
2. 核心实现代码
通过遍历配对DF1和DF2的元素,给每个DataFrame添加目标列,再合并成最终的Main_DF:
方法一:常规循环写法
processed_dfs = [] # 同时遍历DF1里的每个DataFrame和DF2里的对应值 for df, region in zip(DF1, DF2): # 给当前DataFrame添加C列,值为对应的region updated_df = df.assign(C=region) processed_dfs.append(updated_df) # 合并所有处理后的DataFrame Main_DF = pd.concat(processed_dfs, ignore_index=True)
方法二:简洁的列表推导式写法
# 一步完成添加列的操作 processed_dfs = [df.assign(C=region) for df, region in zip(DF1, DF2)] # 合并得到结果 Main_DF = pd.concat(processed_dfs, ignore_index=True)
3. 你之前方法失效的可能原因
- 直接用
pd.concat合并DF1和DF2:两者维度不匹配(DF1是DataFrame列表,DF2是字符串列表),无法直接对齐合并 - 单独用
assign或insert但未循环:只修改了列表里的单个DataFrame,没有遍历处理所有元素 - 使用
insert时未指定正确逻辑:比如没循环处理每个DF,或列位置设置错误
4. 最终结果示例
运行后Main_DF的结构如下:
A B C 0 1 3 NY 1 2 4 NY 2 5 7 FL 3 6 8 FL
内容的提问来源于stack exchange,提问作者Pud
相关产品推荐
相关产品推荐

