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

Pandas合并两列为字典存入新列时报ValueError如何解决

问题原因

  • 报错核心是groupby后apply返回值结构不稳定:当部分分组的to_dict返回结果被pandas自动解析为多列数据时,会和你预期的单列存储冲突,触发列数不匹配报错。这也是问题偶发的原因,只有符合自动展开条件的数据集才会触发异常。
  • 此外to_dict('r')是旧版pandas的简写别名,不同版本对别名的处理逻辑存在差异,会进一步加剧不稳定问题。

修复方案

写法1:修改现有链式调用,强制避免自动拆列

通过外层套列表的方式强制让pandas将转换结果识别为单个值存入单列:

import json
import pandas as pd

jdata = df.groupby(["COMPANY", "rNAME","DATE_START", "DATEFINISH"], as_index=False) \
    .apply(lambda x: [x[['tID','LABEL']].to_dict('records')]) \
    .explode(0) \
    .rename(columns={0: "MDATA"}) \
    .to_json(orient='records')

写法2:兼容性更高的显式循环写法

完全避开pandas隐式转换逻辑,适配所有pandas版本,生产环境更推荐:

import json
import pandas as pd

result = []
group_keys = ["COMPANY", "rNAME","DATE_START", "DATEFINISH"]
for keys, group in df.groupby(group_keys):
    item = dict(zip(group_keys, keys))
    item["MDATA"] = group[['tID','LABEL']].to_dict('records')
    result.append(item)
jdata = json.dumps(result)

两种写法生成的jdata都完全符合你预期的遍历逻辑,不需要修改后续的json调用代码即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 22:21:03