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

如何将DataFrame中No_1与C_N列关联生成目标字典?

问题描述

现有如下DataFrame数据:

No_1         C_N                 
   1            1    
   1            2         
   1            7   
   2           13      
   2            6 

期望生成格式为{1:[1,2,7],2:[13,6]}的字典,其中键为No_1列的值,值为对应C_N列的数值列表。尝试以下代码未成功,寻求正确实现方法:

import pandas as pd

df = pd.read_csv('connection.csv' ,sep=',')
for i ,j in zip(range(166),df['No_1']):
    if i==j:
      print(df['C_N']) 
正确实现方法

方法1:使用groupby + to_dict(推荐)

这是pandas原生的高效解决方案,直接按No_1分组后将C_N聚合为列表,再转换为字典:

import pandas as pd

df = pd.read_csv('connection.csv', sep=',')
result_dict = df.groupby('No_1')['C_N'].apply(list).to_dict()
print(result_dict)

运行后输出结果:{1: [1, 2, 7], 2: [13, 6]},完全符合需求。

方法2:手动遍历构建字典

如果需要更直观的逻辑,可以手动遍历DataFrame行来构建字典:

import pandas as pd

df = pd.read_csv('connection.csv', sep=',')
result_dict = {}
for _, row in df.iterrows():
    key = row['No_1']
    value = row['C_N']
    # 键不存在则初始化空列表
    if key not in result_dict:
        result_dict[key] = []
    result_dict[key].append(value)
print(result_dict)

原代码问题说明

原代码逻辑不符合需求:

  • zip(range(166), df['No_1'])将0-165的整数与No_1的值配对,和分组收集的目标无关
  • 满足i==j时打印整个C_N列,没有实现按No_1分组收集对应数值的逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:46:04