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

拼接DataFrame时如何为索引添加来源标识符

实现方法

你可以通过两种方式快速实现需求,都不需要复杂逻辑:

方法1:提前给每个DataFrame的索引加来源后缀,再拼接

import pandas as pd

# 模拟你的原始数据
df1 = pd.DataFrame({'column1': ['aaa']*4})
df2 = pd.DataFrame({'column1': ['aaa']*4})

# 分别给两个df的索引添加来源标识,不修改原数据可以先做.copy()
df1_processed = df1.copy()
df2_processed = df2.copy()
df1_processed.index = df1_processed.index.astype(str) + '_df1'
df2_processed.index = df2_processed.index.astype(str) + '_df2'

# 拼接后重置索引即可得到你要的Index列
result = pd.concat([df1_processed, df2_processed]).reset_index(names='Index')

方法2:用concat自带的keys参数标记来源,后续统一处理索引

这种方法不需要提前修改每个df的索引,更适合多df批量拼接的场景:

import pandas as pd

# 模拟你的原始数据
df1 = pd.DataFrame({'column1': ['aaa']*4})
df2 = pd.DataFrame({'column1': ['aaa']*4})

# 拼接时用keys标记每个df的来源,会自动生成多级索引
result = pd.concat([df1, df2], keys=['df1', 'df2']).reset_index()

# 拼接生成你要的Index列,这里可以灵活调整序号规则
# 如果你要保留每个df内部的原有序号,用这行:
result['Index'] = result['level_1'].astype(str) + '_' + result['level_0']
# 如果你要全局连续的序号,改成这行就行:
# result['Index'] = result.index.astype(str) + '_' + result['level_0']

# 保留需要的列调整顺序
result = result[['Index', 'column1']]

注意事项

  • 如果你不需要保留原始df的索引,直接修改原df的索引即可,不需要做copy操作
  • 两种方法最终输出的格式都和你要求的完全匹配,可直接使用

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:36:03