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

使用pandas将DataFrame的列表列展开为所有可能幂集的实现方法

实现思路很简单,核心是先为每个nodes列表生成全部非空幂集,再用explode展开即可,具体步骤和可运行代码如下:

实现步骤

  • 基于itertools.combinations实现非空幂集生成函数,跳过空集,按子集长度从小到大生成所有组合
  • 对DataFrame的nodes列调用apply方法,将每个列表替换为其对应的非空幂集
  • 调用pandas原生的explode方法展开处理后的nodes列,其余列会自动复用原行的数值

完整代码

import pandas as pd
from itertools import combinations

# 定义非空幂集生成函数
def get_non_empty_powerset(lst):
    powerset = []
    # 遍历子集长度从1到原列表长度
    for subset_len in range(1, len(lst) + 1):
        # 生成对应长度的所有组合,转成列表后加入结果
        powerset.extend([list(comb) for comb in combinations(lst, subset_len)])
    return powerset

# 构造你的示例DataFrame
df = pd.DataFrame(
    data={
        "id": [0, 3],
        "t": [2, 2],
        "value": [0.032396, 0.060529],
        "nodes": [[1, 2], [1, 2, 3]],
        "sup": [0, 0]
    },
    index=[1, 10]
)

# 处理数据
df["nodes"] = df["nodes"].apply(get_non_empty_powerset)
# explode展开,如需保留原始行索引可删除reset_index方法
result = df.explode("nodes").reset_index(drop=True)

# 输出结果
print(result)

补充说明

如果你的实际需求不是标准的全量非空幂集,只要修改get_non_empty_powerset函数内的子集生成逻辑即可适配不同的展开规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 15:24:08