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

如何将Pandas DataFrame逐行转换为键值对列表?

将Pandas DataFrame转换为行级键值对列表的最优方法

方法一:简洁逐行转换(适合小数据集)

先构造示例DataFrame:

import pandas as pd

df = pd.DataFrame({
    'col1': ['a', 'b', 'c', 'd'],
    'col2': ['tom', 'jay', 'harsh', 'ras'],
    'col3': [90, 75, 35, 50],
    'col4': ['Good', 'Not so good', 'Bad', 'impresive']
})

直接用apply结合列表推导式,按行生成目标键值对列表:

# 生成每行对应的键值对列表,最终结果为一个大列表
result = df.apply(lambda row: [{'key': col, 'value': row[col]} for col in df.columns], axis=1).tolist()

输出result[0]即可得到第一行的目标结构:

[
 {'key':'col1', 'value':'a'},
 {'key':'col2', 'value':'tom'},
 {'key':'col3', 'value':90},
 {'key':'col4', 'value':'Good'}
]

方法二:向量化分组转换(适合大数据集)

如果处理的是大规模数据,推荐用melt+分组的方式,性能更优:

# 将DataFrame转成长格式,保留原行索引
melted_df = df.reset_index().melt(id_vars='index', var_name='key', value_name='value')
# 按行索引分组,每组转换为字典列表
result = melted_df.groupby('index')[['key', 'value']].apply(lambda x: x.to_dict('records')).tolist()

这种方法通过向量化操作避免逐行循环,在数据量较大时效率明显高于第一种方法。

结果验证

两种方法最终得到的result结构完全匹配需求:大列表中的每个元素对应原DataFrame的一行,每行是由列名-值组成的字典列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 03:02:02