如何将Pandas DataFrame转换为包含列表的字典列表?
把Pandas DataFrame转换成含列表的字典列表
嘿,这需求不难搞定!我给你两种实用的方法,都能快速得到你想要的格式:
方法一:先构造Size列再转换(可读性更强)
这种方法先给DataFrame新增一个Size列,把Length、Width、Height三个字段的值合并成列表,再提取需要的列转成字典列表,逻辑非常清晰:
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] }) # 1. 生成Size列:把每行的Length、Width、Height转成列表 df["Size"] = df[["Length", "Width", "Height"]].values.tolist() # 2. 只保留需要的字段,转成字典列表 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]} ]
方法二:用apply逐行构造字典(更直接)
如果不想新增列,也可以直接用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] }) 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)
这个方法的结果和上面完全一致,适合字段较少的场景,一步到位。
两种方法任选其一就行,根据你的实际数据量和编码习惯来~
内容的提问来源于stack exchange,提问作者GuntherSan
相关产品推荐
相关产品推荐

