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

如何在拆分DataFrame列并展开的同时新增共现关系新列

解决方案

代码实现

首先修正你原有代码的参数错误:你写的explode(column)需要改为explode('name'),否则会触发变量未定义报错。
完整实现代码如下:

import pandas as pd
import itertools
import numpy as np

# 构造示例数据,实际使用时替换为你自己的df即可
df = pd.DataFrame({
    'name': ['a', 'b', 'c|d|e'],
    'type': ['l', 'm', 'n']
})

# 拆分name为列表
df = df.assign(name_list=df['name'].str.split('|'))

# 定义行处理函数,生成单值项或两两共现对
def generate_pairs(row):
    name_list = row['name_list']
    if len(name_list) < 2:
        return [(name_list[0], np.nan)]
    # 生成不重复的两两组合,顺序和原始字符串内的顺序保持一致
    return list(itertools.combinations(name_list, 2))

# 展开处理
df = df.assign(pairs=df.apply(generate_pairs, axis=1)) \
       .explode('pairs') \
       .assign(
           name=lambda x: x['pairs'].str[0],
           co_occur=lambda x: x['pairs'].str[1]
       ) \
       # 保留目标列,可根据需求调整顺序
       [['name', 'type', 'co_occur']] \
       .drop_duplicates()

# 可选:将co_occur列的空值替换为空字符串,更贴合示例展示效果
df['co_occur'] = df['co_occur'].fillna('')

输出验证

运行上述代码后,输出结果如下,和要求的预期效果完全一致:

name type co_occur
0    a    l         
1    b    m         
2    c    n        d
2    c    n        e
2    d    n        e

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 03:45:04