如何将Pandas列值转为带列名的字典并输出双引号格式
Pandas DataFrame结构转换实现方案
需求说明
将包含ID、ValueM2、ValueSqFt三列的原始DataFrame,转换为包含ID、DataMetric(嵌套字典存储公制单位值)、DataImperial(嵌套字典存储英制单位值)的新DataFrame,且输出结果需使用双引号。
实现代码
import pandas as pd # 初始化原始DataFrame df = pd.DataFrame({ "ID": ["ID no1", "ID no2", "ID no3"], "ValueM2": ["11998","11076", "12025"], "ValueSqFt": [129145.39718,119221.07178, 129.43600276] }) # 构造目标结构的新DataFrame dfnew = pd.DataFrame({ "ID": df["ID"], # 将ValueM2列转换为嵌套字典格式 "DataMetric": df["ValueM2"].apply(lambda val: {"ValueM2": val}), # 将ValueSqFt数值转字符串后,再转换为嵌套字典格式 "DataImperial": df["ValueSqFt"].apply(lambda val: {"ValueSqFt": str(val)}) }) # 输出带双引号的格式化结果 print(dfnew.to_json(orient='records', indent=2))
代码说明
- 构造嵌套字典列:通过
apply结合lambda函数,将每一行的单个字段值封装为目标要求的字典结构; - 类型转换:针对
ValueSqFt列,将数值类型转为字符串,匹配目标结构中的字符串格式要求; - 双引号输出:使用
to_json方法生成标准JSON格式结果,自动使用双引号,同时indent=2保证输出格式清晰易读。
输出结果示例
[ { "ID": "ID no1", "DataMetric": { "ValueM2": "11998" }, "DataImperial": { "ValueSqFt": "129145.39718" } }, { "ID": "ID no2", "DataMetric": { "ValueM2": "11076" }, "DataImperial": { "ValueSqFt": "119221.07178" } }, { "ID": "ID no3", "DataMetric": { "ValueM2": "12025" }, "DataImperial": { "ValueSqFt": "129.43600276" } } ]
内容的提问来源于stack exchange,提问作者D P
相关产品推荐
相关产品推荐

