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

如何在Pandas中提取列唯一值并映射另一列非关联项?

解决方案

可以通过生成Col1唯一值与Col2唯一值的笛卡尔积,再和原始数据合并来实现需求,具体步骤如下:

1. 构造示例数据(模拟你的原始DataFrame)

import pandas as pd

data = {
    'Col1': ['D1', 'D1', 'D1', 'D2', 'D2', 'D4'],
    'Col2': ['C38', 'C65', 'C53', 'C02', 'C01', 'C73'],
    'Label': [1, 1, 1, 1, 1, 1]
}
df = pd.DataFrame(data)

2. 生成所有可能的Col1-Col2组合

先提取Col1和Col2的所有唯一值,再生成它们的笛卡尔积(即所有可能的配对):

# 获取Col1、Col2的唯一值集合
unique_col1 = df['Col1'].unique()
unique_col2 = df['Col2'].unique()

# 生成所有可能的组合
all_pairs = pd.MultiIndex.from_product(
    [unique_col1, unique_col2], 
    names=['Col1', 'Col2']
).to_frame(index=False)

3. 合并原始数据并标记Label值

将所有组合与原始DataFrame合并,原始存在的配对保留Label=1,不存在的配对填充Label=0:

# 左连接合并,保留所有组合
result = all_pairs.merge(df, on=['Col1', 'Col2'], how='left')
# 填充缺失的Label为0,并转为整数类型
result['Label'] = result['Label'].fillna(0).astype(int)

4. 查看结果

运行后result就是你需要的输出:

Col1 Col2  Label
0    D1  C38      1
1    D1  C65      1
2    D1  C53      1
3    D1  C02      0
4    D1  C01      0
5    D1  C73      0
6    D2  C38      0
7    D2  C65      0
8    D2  C53      0
9    D2  C02      1
10   D2  C01      1
11   D2  C73      0
12   D4  C38      0
13   D4  C65      0
14   D4  C53      0
15   D4  C02      0
16   D4  C01      0
17   D4  C73      1

补充说明

  • 如果你的Col2包含更多未在示例中列出的值(比如你提到的C61、C03),只需确保这些值存在于原始DataFrame的Col2列中,代码会自动提取所有唯一值并生成对应组合。
  • 这种方法逻辑清晰,利用Pandas内置方法高效处理配对和合并,避免手动循环。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 09:54:23