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

将DataFrame转换为字典时丢失记录问题求助

问题分析与解决方案

嘿,我一眼就看出问题所在啦——你的ID列存在大量重复值!

为什么会出现这种情况?

当你用set_index('ID')把ID设为索引后,虽然pandas允许重复索引,但调用to_dict()的时候,字典的键必须是唯一的。这时候后面出现的重复ID会直接覆盖前面的,最后字典里就只剩所有唯一ID对应的记录,刚好是680条,这和你看到的结果完全匹配。

先验证这个猜测

你可以先跑一行代码确认ID的唯一值数量:

print(data['ID'].nunique())

输出肯定是680,实锤这个问题~

两种解决方案,看你的需求选:

1. 同一个ID对应多条评论,想全部保留

如果重复ID是正常业务逻辑(比如同一个电影ID有多条用户评论),那可以把相同ID的评论合并成列表:

# 按ID分组,把每组的Reviews拼成列表,再转成字典
reviews_dict = data.groupby('ID')['Reviews'].apply(list).to_dict()
# 此时每个ID对应的是该ID下所有评论的列表,比如 reviews_dict[123] = ["好评", "还行"...]

2. ID重复是数据错误,需要去重

如果ID应该是唯一的,那先清理重复数据再转字典:

# 保留每个ID的第一条记录,或者把keep改成'last'保留最后一条
data_cleaned = data.drop_duplicates(subset='ID', keep='first')
# 再转成字典
reviews = data_cleaned.set_index('ID')['Reviews'].to_dict()

补充:原代码的小优化

其实你不需要用.get('Reviews'),直接这样写更简洁:

reviews = data.set_index('ID')['Reviews'].to_dict()

不过核心问题还是ID重复啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:27:23