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

使用Pandas匹配DataFrame添加category列时如何保留原索引?

保留原索引的两种解决方案

你的思路没问题,melt转置df2是正确的,但merge会默认生成新索引,要保留原索引可以试试这两种方法:

方法一:先保存原索引再恢复

先把df1的原索引存成一列,merge后再设回索引:

# 先把原索引存为单独列
df1['original_idx'] = df1.index
# 你的原有melt和merge步骤
mel = df2.melt(var_name='Category', value_name='name')
df1 = df1.merge(mel, on='name')
# 把保存的列重新设为索引,恢复原样
df1.set_index('original_idx', inplace=True)
# 可选:去掉索引的名称,和原df1保持一致
df1.index.name = None

方法二:用映射字典直接赋值(更高效)

不用merge,先从df2构建「名称-类别」的映射字典,再用map给df1加列,全程不碰索引:

# 构建name到category的映射字典
category_map = {}
for category in df2.columns:
    for item in df2[category]:
        category_map[item] = category

# 直接添加Category列,原索引完全保留
df1['Category'] = df1['name'].map(category_map)

这种方法更简洁,而且不会因为merge产生额外的操作,索引从头到尾都不会变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 21:55:20