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

如何用pandas高效实现DataFrame添加标签列并合并两个数据集

最优实现方案

完全可以用pandas内置的矢量化操作实现,无需循环,性能远高于逐行拼接的写法,两种常用写法如下:

写法1:stack实现(代码最简洁)

import pandas as pd

# 堆叠df1转为长格式单列
df_new = df1.stack().reset_index(drop=True).to_frame('value')
# 按行对应关系重复标签,直接赋值
df_new['label'] = df2[0].repeat(df1.shape[1]).values

写法2:melt实现(逻辑更直观)

# 重置行索引后用melt转长表
df_melt = df1.reset_index().melt(id_vars='index', value_name='value')
# 按原行顺序排序保证标签对应
df_melt = df_melt.sort_values('index').reset_index(drop=True)
# 匹配对应标签
df_melt['label'] = df2.iloc[df_melt['index']][0].values
# 提取需要的列
df_new = df_melt[['value', 'label']]

性能说明

你原来的写法中每次循环都执行pd.concat,会产生大量中间对象,时间复杂度为O(n²),数据量越大性能衰减越严重。上面两种写法都是pandas原生矢量化操作,时间复杂度为O(n),百万级数据量下也能快速完成计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 04:18:03