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

如何在Pandas的concat()中添加数据来源指示列?

当然可以实现!虽然pd.concat()没有像pd.merge()那样内置的indicator参数,但我们可以手动给每个要合并的DataFrame添加一个来源标识列,再执行合并,就能达到类似的效果,甚至还能自定义标识内容,更灵活。

给pd.concat()添加来源指示列的方法

1. 合并2个DataFrame的简单场景

先给每个DataFrame手动添加一个标识列,自定义它的取值来代表数据来源,再执行concat:

import pandas as pd

# 示例数据
df1 = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})
df2 = pd.DataFrame({'col1': [5, 6], 'col2': [7, 8]})

# 给每个DataFrame添加来源标识列
df1['data_source'] = 'df1'  # 你可以改成任意自定义名称,比如"原始数据集A"
df2['data_source'] = 'df2'

# 执行合并
merged_result = pd.concat([df1, df2], ignore_index=True)

执行后,merged_result里的data_source列就会清晰显示每一行数据来自哪个原始DataFrame。

2. 合并多个DataFrame的批量处理场景

如果要合并的DataFrame数量较多,用循环批量添加标识列更高效:

import pandas as pd

# 假设有3个待合并的DataFrame
df1 = pd.DataFrame({'col1': [1, 2], 'col2': [3, 4]})
df2 = pd.DataFrame({'col1': [5, 6], 'col2': [7, 8]})
df3 = pd.DataFrame({'col1': [9, 10], 'col2': [11, 12]})

# 把所有DataFrame放进列表
df_list = [df1, df2, df3]
# 自定义每个数据源的名称(也可以用索引编号)
source_names = ['用户数据', '订单数据', '商品数据']

# 批量添加标识列
for df, name in zip(df_list, source_names):
    df['data_source'] = name

# 执行合并
final_result = pd.concat(df_list, ignore_index=True)

补充说明

这种方法比merge的indicator更灵活:你可以完全自定义标识的内容,比如用业务场景里的真实名称(比如"2024年上半年数据"),而不是局限于merge里固定的left_only/right_only/both取值。如果是横向合并(axis=1),这个方法同样适用——只需要给每个DataFrame添加标识列后,按列合并即可。

内容的提问来源于stack exchange,提问作者CandleWax

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:21:35