You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于索引合并列表型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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 10:10:49