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
相关产品推荐
相关产品推荐

