如何将Pandas DataFrame转换为包含列表的字典列表?
嘿,这个转换需求我之前也碰到过,给你两个实用的方法,轻松搞定:
方法1:用apply逐行构建字典(直观易理解)
这个方法逻辑很直接,对DataFrame的每一行做自定义转换,把Length、Width、Height三个字段打包成列表放到Size里:
import pandas as pd # 你的原始DataFrame df = pd.DataFrame({ "ID":["A1","B2","C3","D4"], "x":[1,1,2,2], "Length":[10,11,6,8], "Width":[1,1.3,2,1], "Height": [0.5,0.5,0.5,0.5] }) # 转换为目标格式 list_of_dict = df.apply( lambda row: { "ID": row["ID"], "x": row["x"], "Size": [row["Length"], row["Width"], row["Height"]] }, axis=1 # 指定按行处理 ).tolist() # 输出结果 print(list_of_dict)
方法2:先创建Size列再转换(性能更优)
如果你的DataFrame数据量很大,推荐用这个方法——先通过向量化操作生成Size列,再转成字典列表,比逐行apply效率高很多:
import pandas as pd df = pd.DataFrame({ "ID":["A1","B2","C3","D4"], "x":[1,1,2,2], "Length":[10,11,6,8], "Width":[1,1.3,2,1], "Height": [0.5,0.5,0.5,0.5] }) # 先把三个列的值打包成列表,生成Size列 df["Size"] = df[["Length", "Width", "Height"]].values.tolist() # 只保留需要的字段,转换为字典列表 list_of_dict = df[["ID", "x", "Size"]].to_dict("records") print(list_of_dict)
两种方法最终都会输出你想要的格式:
[ {"ID": "A1", "x": 1, "Size": [10, 1, 0.5]}, {"ID": "B2", "x": 1, "Size": [11, 1.3, 0.5]}, {"ID": "C3", "x": 2, "Size": [6, 2, 0.5]}, {"ID": "D4", "x": 2, "Size": [8, 1, 0.5]} ]
内容的提问来源于stack exchange,提问作者GuntherSan
相关产品推荐
相关产品推荐

