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

如何基于DataFrame行内集合元素判断并新增Package列?

解决思路:根据集合匹配规则新增Package列

首先明确你的需求:基于DataFrame中Item列的集合值,匹配预设规则生成对应的Package列。以下是两种实用的实现方案:

原始数据与匹配规则

先还原你的初始DataFrame:

import pandas as pd

ex_df = pd.DataFrame({'ID': {0: 1, 1: 2, 2: 3, 3: 4}, 'Item': {0: {1}, 1: {1, 2}, 2: {1, 3, 4}, 3: {1, 3}}})

匹配规则:

  • Package1:集合为{1}
  • Package2:集合为{1, 2}
  • Package3:集合为{1, 3, 4}
  • Package4:集合为{1, 3}

方法1:字典映射(高效简洁)

直接创建集合到Package名称的映射字典,利用pandas的map方法快速生成新列,这是效率最高的方案:

# 定义集合到Package的映射关系
package_map = {
    {1}: 'Package1',
    {1, 2}: 'Package2',
    {1, 3, 4}: 'Package3',
    {1, 3}: 'Package4'
}

# 新增Package列
ex_df['Package'] = ex_df['Item'].map(package_map)

方法2:自定义函数+apply(灵活适配复杂规则)

如果后续规则需要调整(比如增加模糊匹配、异常值处理),可以用自定义函数结合apply实现:

def match_package(item_set):
    if item_set == {1}:
        return 'Package1'
    elif item_set == {1, 2}:
        return 'Package2'
    elif item_set == {1, 3, 4}:
        return 'Package3'
    elif item_set == {1, 3}:
        return 'Package4'
    else:
        return 'Unknown'  # 处理未匹配到规则的情况

ex_df['Package'] = ex_df['Item'].apply(match_package)

验证结果

执行上述任意方案后,查看最终DataFrame:

print(ex_df)

输出与你期望的结果完全一致:

ID          Item    Package
0   1           {1}  Package1
1   2        {1, 2}  Package2
2   3     {1, 3, 4}  Package3
3   4        {1, 3}  Package4

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:05:29