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

如何在Python层级数据生成结果中添加issue字段?

解决方案

核心问题在于原脚本将所有issue的数据合并到同一图中,导致无法区分不同问题的层级路径。我们需要按issue分组处理,每个分组单独构建图并提取路径,最后关联对应的问题ID。

修改后的完整代码

import networkx as nx
import pandas as pd
import numpy as np

# 假设原始数据已加载到df中(替换为你的数据加载逻辑)
# df = pd.read_csv("your_data.csv")

all_results = []

# 按issue分组处理每个子数据集
for issue_id, group_df in df.groupby('issue'):
    # 为当前issue构建独立的有向图
    G = nx.from_pandas_edgelist(group_df, source='father', target='son', create_using=nx.DiGraph, edge_attr=True)
    
    # 识别当前图的根节点(入度为0)和叶节点(出度为0)
    roots = [v for v, d in G.in_degree() if d == 0]
    leaves = [v for v, d in G.out_degree() if d == 0]
    
    # 提取所有简单路径
    issue_paths = []
    for root in roots:
        for leaf in leaves:
            paths = nx.all_simple_paths(G, root, leaf)
            issue_paths.extend(paths)
    
    # 处理自环节点(如果存在)
    for node in nx.nodes_with_selfloops(G):
        issue_paths.append([node, node])
    
    # 转换路径为DataFrame并格式化
    path_df = pd.DataFrame(sorted(issue_paths)).add_prefix('Value_Depend_On_ID_').fillna('')
    path_df = path_df.replace('', np.nan, regex=True).astype('Int64')
    # 添加当前issue字段
    path_df['issue'] = issue_id
    
    # 收集当前issue的结果
    all_results.append(path_df)

# 合并所有结果并输出
final_df = pd.concat(all_results, ignore_index=True)
print(final_df)

关键修改说明

  • 分组处理:通过groupby('issue')将数据按问题ID拆分,每个问题单独构建图,避免不同问题的层级结构互相干扰
  • 关联issue字段:每个分组处理完成后,为路径DataFrame添加对应的issue列
  • 合并结果:将所有问题的处理结果合并为最终表格,保证输出格式与期望一致

输出示例

运行代码后将得到如下结果:

Value_Depend_On_ID_0Value_Depend_On_ID_1Value_Depend_On_ID_2issue
3334351
33342

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 23:43:45