Python通过soap请求导入获取数据以定义列和行



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

(rowset){item[] = ](row){]item[] = (column){name = "client_hi"value = "01.129"},(column){name = "vendor_hi"value = "01.199"(column){name = "src_bill_time"value = "1521.37"},},(row){item[] = (column){name = "client_hi"value = "01.129"},(column){name = "vendor_hi"value = None},(column){name = "src_bill_time"value = None},},(row){item[] = (column){name = "client_hi"value = "01.129"},(column){name = "vendor_hi"value = "01.196"},(column){name = "src_bill_time"value = "898.88"},}

现在,我需要panda中的一个Dataframe,它以列的形式包含"name",每个单元格中包含3个数据为"value"的"row"。

请求输出:

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’},{‘ame’:‘vendor_hi‘,‘value‘:‘None’}{‘item’:[{‘name’:‘client_hi’,‘value’:‘01.129’},{‘ame’:‘vendor_hi’、‘value’:‘1.196’}、{‘name':‘src_bill_time’、‘value':‘898.88’}

但是,我仍然在寻找一种方法来创建一个数据表,将其导入熊猫中,熊猫包括在"name"中作为列,由3个"row"组成,每个单元格中都有"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列表,删除一些字符和"值"one_answers"名称",这给了我以下格式:

[{'client_hi':  '01.129','vendor_hi':  '01.199' ,src_bill_time',  '1521.37',}]

最后使用熊猫

import pandas
df=pd.DataFrame(my_customized_list)

最新更新