如何将Pandas DataFrame转换为指定结构的JSON用于POST请求
将Pandas DataFrame转换为指定结构的JSON用于POST请求
问题背景
使用Python 3.9 + Pandas,现有如下结构的DataFrame:
| AVG_SCORE | ASD_SCORE | QWE_AVG | OPO_SCORE | HAHA_SCORE |
|---|---|---|---|---|
| -0.487 | -0.560 | -0.171 | -0.581 | 0.063 |
| 388545 | 388545 | 388545 | 388545 | 388545 |
需要转换为以下指定结构的JSON,用于外部接口POST请求:
{ "label_1": "description_harcode_here_1", "description_harcode_here_2" : [ { "field": "AVG_SCORE", "avg": -0.487, "count": 388545 }, { "field": "ASD_SCORE", "avg": -0.560, "count": 388545 }, { "field": "QWE_AVG", "avg": -0.171, "count": 388545 }, { "field": "OPO_SCORE", "avg": -0.581, "count": 388545 }, { "field": "HAHA_SCORE", "avg": 0.063, "count": 388545 } ] }
实现方法
直接通过Pandas的行提取和字典遍历即可完成转换,代码示例如下:
import pandas as pd import json # 假设你的DataFrame已经存在,这里构造示例数据 df = pd.DataFrame({ 'AVG_SCORE': [-0.487, 388545], 'ASD_SCORE': [-0.560, 388545], 'QWE_AVG': [-0.171, 388545], 'OPO_SCORE': [-0.581, 388545], 'HAHA_SCORE': [0.063, 388545] }) # 提取第一行作为avg值,第二行作为count值,转为字典 avg_dict = df.iloc[0].to_dict() count_dict = df.iloc[1].to_dict() # 生成字段列表 field_items = [] for field_name in avg_dict: field_items.append({ 'field': field_name, 'avg': avg_dict[field_name], 'count': count_dict[field_name] }) # 组装最终的JSON结构 target_json = { 'label_1': 'description_harcode_here_1', 'description_harcode_here_2': field_items } # 转换为格式化的JSON字符串(如果需要直接发送请求,也可以使用字典结构) formatted_json_str = json.dumps(target_json, indent=4) print(formatted_json_str)
代码说明
- 行提取:用
df.iloc[0]获取第一行的所有avg值,df.iloc[1]获取第二行的count值,转成字典后可以通过字段名直接取值。 - 遍历构造列表:循环每个字段名,生成包含
field、avg、count的字典,加入列表。 - 组装目标结构:将硬编码的固定字段和生成的列表组合成目标字典,如需JSON字符串则用
json.dumps格式化。
内容的提问来源于stack exchange,提问作者Juan Almada
相关产品推荐
相关产品推荐

