Python SUD通过soap请求获取数据导入到pandas-定义列和行

Python SUD通过soap请求获取数据导入到pandas-定义列和行,python,pandas,suds,soapheader,Python,Pandas,Suds,Soapheader,我正在使用suds从wsdl获取数据,并且已经成功地从相应的服务获取了数据。 现在作为回应,我有以下数据,即“sudsobject” 现在,我需要在pandas中创建一个数据框,其中包含“name”作为列,包含3个“row”,每个单元格中包含“value”数据 请求的输出: client_hi,vendor_hi,src_bill_time 1.129,1.199,1521.37 1.129,None,None 1.129,1.196,898.88 此外,我可以将其转换为json序列化格式:

我正在使用suds从wsdl获取数据,并且已经成功地从相应的服务获取了数据。 现在作为回应,我有以下数据,即“sudsobject”

现在,我需要在pandas中创建一个数据框,其中包含“name”作为列,包含3个“row”,每个单元格中包含“value”数据

请求的输出:

client_hi,vendor_hi,src_bill_time
1.129,1.199,1521.37
1.129,None,None
1.129,1.196,898.88
此外,我可以将其转换为json序列化格式:

{'item': [{'name': 'client_hi', 'value': '01.129'}, {'name': 'vendor_hi', 'value': '01.199'}, {'name': 'src_bill_time', 'value': '1521.37'},]}
{'item':[{'name':'client_hi','value':'01.129'},{'name':'vendor_hi','value':'None'},{'name':'src_bill_time','value':'None'},]} {'item':[{'name':'client_hi','value':'01.129'},{'name':'vendor_hi','value':'1.196'},{'name':'src_bill_time','value':'898.88'},]}

但是,我仍然在寻找一种方法来创建一个数据表,该数据表将作为列导入“name”字段中,每个单元格中包含3行“value”数据。(如上文“请求的输出”)

我找到了解决方案。 我必须将suds对象转换为JS序列化的数字:

def recursive_asdict(d):
"""Convert Suds object into serializable format."""
out = {}
for k, v in asdict(d).items():
    if hasattr(v, '__keylist__'):
        out[k] = recursive_asdict(v)
    elif isinstance(v, list):
        out[k] = []
        for item in v:
            if hasattr(item, '__keylist__'):
                out[k].append(recursive_asdict(item))
            elif not isinstance(item, list):
                out[k] = item
            else:
                out[k].append(item)
    else:
        out[k] = v
return out
这给出了问题中提到的格式:{'item':[{'name'。。。 然后,使用Regex,转换为python列表,并删除一些字符和“value”和“name”,它们给出了以下格式:

[{'client_hi':  '01.129','vendor_hi':  '01.199' ,src_bill_time',  '1521.37',}]
最后使用熊猫

import pandas
df=pd.DataFrame(my_customized_list)

很难理解您从查询中得到了什么,它是json?csv?dict?数据帧吗?熊猫数据帧通常可以读取这种类型并生成适当的数据帧。它是一个soap请求“client.service.call()”用于wsdl方法,在它的响应中,我得到了代码“client.service.selectRowset()中的XML响应,上面给出的最后一个回答(第一个),也是“课堂”。
import pandas
df=pd.DataFrame(my_customized_list)