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

pandas调用to_dict('records')返回列表 无法提取字典值如何解决

问题原因

pandas中DataFrame.to_dict('records')的设计返回值就是由每行对应字典组成的列表,当你使用sample()仅抽取1行时,返回的列表长度为1,字典存储在列表的第一个元素中,所以直接对列表调用.values()方法会报错。

可行解决方法

方法1:直接取出列表内的字典

这是最贴合你现有代码的修改方案,只需要加一个索引取列表第一个元素即可:

sample = random_lets_df.sample() 
# 索引[0]取出列表中唯一的字典
rand_dict = sample.to_dict('records')[0]
# 正常提取值列表
rand_dict_val = list(rand_dict.values())

后续需要匹配键值对时,直接使用rand_dict的键值对应关系即可。

方法2:无需转字典,直接提取值和列名

如果你只是需要值列表和对应的列名配对,不需要中间生成字典,可以更高效的直接提取:

sample = random_lets_df.sample()
# 提取随机行的值列表
rand_dict_val = sample.values.tolist()[0]
# 提取对应列名(即你需要的键)
col_keys = sample.columns.tolist()

# 后续需要匹配键值时直接拼接即可
key_value_mapping = dict(zip(col_keys, rand_dict_val))

多随机行场景适配

如果你后续需要一次性抽取多行(比如sample(n=5)),遍历返回的字典列表处理即可:

samples = random_lets_df.sample(n=5)
rand_dicts = samples.to_dict('records')
# 遍历每行处理
for row_dict in rand_dicts:
    row_values = list(row_dict.values())
    # 传入你的背包优化函数处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 10:27:02