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

求助:将DataFrame转换为以id为主键且值大于0的字典

解决方案:将DataFrame转换为指定格式的字典

我来帮你搞定这个转换需求!要实现以id为主键、内部仅保留值大于0的字典格式,你可以按照以下步骤操作:

核心思路

  1. 将id列设为DataFrame的索引,方便后续直接用它作为字典的键
  2. 遍历每一行数据,过滤掉值≤0的列
  3. 将过滤后的行数据转为字典,最终组合成目标格式的大字典

代码实现

import pandas as pd

# 构造你提供的示例DataFrame
data = {
    'id': [1, 2, 3],
    'score1': [0.0, 0.0532, 0.0],
    'score2': [0.1087, 0.3083, 0.0840],
    'score3': [0.0, 0.2864, 0.8090],
    'score4': [0.0786, 0.4464, 0.2331],
    'score5': [1, 1, 1]
}
df = pd.DataFrame(data)

# 转换为目标格式字典
result_dict = {}
# 将id设为索引后遍历每一行
for id_val, row in df.set_index('id').iterrows():
    # 过滤出值大于0的列,转为字典
    filtered_items = row[row > 0].to_dict()
    # 把id转为整数类型(避免出现float),存入结果字典
    result_dict[int(id_val)] = filtered_items

print(result_dict)

代码解释

  • df.set_index('id'):把id列设置为索引,这样遍历的时候id_val就是我们需要的主键值
  • row[row > 0]:通过布尔索引过滤掉值≤0的元素,只保留符合要求的列
  • to_dict():将过滤后的Series对象转换为字典,作为对应id的内部值
  • int(id_val):确保主键是整数类型(因为DataFrame的索引可能会变成float,这里转成int和你期望的结果一致)

运行这段代码后,你就能得到和期望完全一致的字典格式啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 15:32:36