将文本字符串转换为数据框-逗号分隔

3

我将尝试解析API的响应。它需要一批电话号码,并返回其状态信息,例如是否为活动状态。

这是响应的样式:

# API call

s.get('https://api/data/stuff')

# response

',MSISDN,Status,Error Code,Error Text,Original Network,Current Network,Current Country,Roaming 
Country,Type,Date Checked\n447541255456,447541255456,Undelivered,27,Absent Subscriber,O2 
(UK),,,,Mobile,Wed Oct  9 2019 12:26:51 GMT+0000 (UTC)\n447856999555,447856999555,Undelivered,1,Dead,O2
 (UK),,,,Mobile,Wed Oct  9 2019 12:26:51 GMT+0000 
(UTC)\n447854111222,447854111222,Undelivered,1,Dead,Orange,,,,Mobile,Wed Oct  9 2019 12:26:51 GMT+0000 
(UTC)\n'

我可以看到MSISDN,Status,Error Code,Error Text,Original Network,Current Network,Current Country,Roaming Country,Type,Date Checked是表头,其余的是行。
但我无法将其转化为易于阅读的结构,例如数据框。
在输入此问题时,有一些建议的答案,使用import iopd.read_table等,但我无法让它们中的任何一个工作。
我想我可以将其保存为txt文件,然后将其读回作为逗号分隔的csv。但是是否有本地的pandas或其他更简单的方法来做到这一点?
这是响应字符串直接粘贴到stackoverflow上,没有整理:
',MSISDN,Status,Error Code,Error Text,Original Network,Current Network,Current Country,Roaming Country,Type,Date Checked\n447541255456,447541255456,Undelivered,27,Absent Subscriber,O2 (UK),,,,Mobile,Wed Oct  9 2019 12:26:51 GMT+0000 (UTC)\n447856999555,447856999555,Undelivered,1,Dead,O2 (UK),,,,Mobile,Wed Oct  9 2019 12:26:51 GMT+0000 (UTC)\n447854111222,447854111222,Undelivered,1,Dead,Orange,,,,Mobile,Wed Oct  9 2019 12:26:51 GMT+0000 (UTC)\n'
1个回答

4

我相信您需要:

from io import StringIO

df = pd.read_csv(StringIO(s.get('https://api/data/stuff')))

或者尝试:

df = pd.read_csv('https://api/data/stuff')

1
谢谢,第一个可以用。第二个说找不到文件,我想它在我的硬盘上寻找名为'https://api/data/stuff'的文件。 - SCool

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接