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

Python实现SOAP返回的字典与字典列表转指定列Dataframe

处理SOAP响应数据转为指定列的DataFrame

核心思路

先统一数据格式(将单个字典转为列表),再提取需要的列,最后转换为DataFrame。

实现代码

import pandas as pd

def soap_response_to_df(response_data, target_cols=['NVIC_CUR', 'NVIC_MODEL', 'ModelName']):
    # 把单个字典转为列表,统一处理格式
    data_list = [response_data] if isinstance(response_data, dict) else response_data
    # 只保留目标列的数据
    filtered_rows = [{col: row[col] for col in target_cols} for row in data_list]
    # 生成DataFrame
    return pd.DataFrame(filtered_rows)

测试示例

1. 单个字典响应

response_single = {
   '@diffgr:id': 'Table1', 
   '@msdata:rowOrder': '0', 
   'NVIC_CUR': '0BQU22', 
   'NVIC_MODEL': '0BQU', 
   'ModelName': 'DIESEL TWIN TURBO 4 1996 cc BTCDI 10 SP AUTOMATIC'
}
df_single = soap_response_to_df(response_single)
print(df_single)

输出结果:

NVIC_CUR NVIC_MODEL                                          ModelName
0   0BQU22        0BQU  DIESEL TWIN TURBO 4 1996 cc BTCDI 10 SP AUTOMATIC

2. 字典列表响应

response_list = [
    {'@diffgr:id': 'Table1', '@msdata:rowOrder': '0', 'NVIC_CUR': '09GE22', 'NVIC_MODEL': '09GE', 'ModelName': 'DIESEL TWIN TURBO 4 1996 cc BTCDI 10 SP AUTOMATIC'},
    {'@diffgr:id': 'Table2', '@msdata:rowOrder': '1', 'NVIC_CUR': '0BR222', 'NVIC_MODEL': '0BR2', 'ModelName': 'DIESEL TWIN TURBO 4 1996 cc BTCDI 10 SP AUTOMATIC'}
]
df_list = soap_response_to_df(response_list)
print(df_list)

输出结果:

NVIC_CUR NVIC_MODEL                                          ModelName
0   09GE22        09GE  DIESEL TWIN TURBO 4 1996 cc BTCDI 10 SP AUTOMATIC
1   0BR222        0BR2  DIESEL TWIN TURBO 4 1996 cc BTCDI 10 SP AUTOMATIC

说明

这个函数可以兼容SOAP API返回的两种数据格式,自动处理单个字典或字典列表的情况,只保留你指定的NVIC_CUR、NVIC_MODEL、ModelName三列数据,生成标准的pandas DataFrame。

内容的提问来源于stack exchange,提问作者Rajesh Artist

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 19:31:15