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

基于值关联两列:为Pandas多级索引DataFrame生成复合新列

解决方案

我们可以通过字符串分割拼接和索引提取来完成需求,具体操作如下:

  1. 生成secondary-refid列:将refid按.分割,保留前两个部分后重新用.拼接
  2. 生成唯一ID列:把索引中的ID-B值转为字符串,和secondary-refid用_拼接

完整代码

import pandas as pd

# 原DataFrame构造代码
data = {'refid': ['1.2.34',
                  '1.2.35',
                  '1.3.66',
                  '1.6.99',
                  '1.9.00',
                  '1.87.66',
                  '1.98.00',
                  '1.100.1',
                  '1.101.3'],
        }
my_index = pd.MultiIndex.from_arrays([["A"]*6 + ["B"]*3, [1, 1, 1, 2, 2, 2, 1, 1, 1]], names=["ID-A", "ID-B"])
df = pd.DataFrame(data, index=my_index)

# 生成secondary-refid列:分割refid取前两部分并拼接
df['secondary-refid'] = df['refid'].str.split('.', n=2).str[:2].str.join('.')

# 生成唯一ID列:拼接ID-B与secondary-refid
df['唯一ID'] = df.index.get_level_values('ID-B').astype(str) + '_' + df['secondary-refid']

处理后结果示例

执行代码后,DataFrame会新增目标列,部分数据展示如下:

ID-AID-Brefidsecondary-refid唯一ID
A11.2.341.21_1.2
A11.2.351.21_1.2
A21.6.991.62_1.6
B11.100.11.1001_1.100

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:25:32