将大量api数据附加到pandas数据帧,我的函数出了什么问题?

时间:2016-11-18 08:53:29

标签: python list pandas

我收到api数据'nftp'的提要,我有一个处理传入数据的函数。我收到数据确定,我可以打印数据(按照下面的功能)。

如何将数据存储在pandas数据框中?

数据'nftp'是流式传输的,即每次有新线或有时几条线进入时,'nftpGeneralHandler'会将数据附加到数据帧,而不是从空数据帧开始,只有空列表(我猜)。

传入数据格式: [386,3,375,'OSE','?',94520,'STL',94520,800,36.2,'A','?','?',0.0,'S'] 我的函数中的打印命令返回:('STL',94520,36.2,1145,'A','S')

尝试将数据存储在列表中然后是数据帧时,我做错了什么?

graph_data = pd.DataFrame()
def nftpGeneralHandler(nftp, api): 
   print "Received ", nftp
   data_list = []
   if nftp[1] == 3 and nftp[10] == 'A':
       print (nftp[6], nftp[7], nftp[9], nftp[8], nftp[10], nftp[14])
       data_list.append([nftp[6], nftp[7], nftp[9], nftp[8], nftp[10], nftp[14]])
       graph_data.append(data_list)

   elif nftp[1] == 99: 
      nftpError(nftp, api)

1 个答案:

答案 0 :(得分:0)

我认为您可以在每个函数循环中返回所需的数据,并将它们附加到graph_data。上次使用DataFrame构造函数:

def nftpGeneralHandler(nftp, api): 
   #print "Received ", nftp
   if nftp[1] == 3 and nftp[10] == 'A':
       print (nftp[6], nftp[7], nftp[9], nftp[8], nftp[10], nftp[14])
       out = [nftp[6], nftp[7], nftp[9], nftp[8], nftp[10], nftp[14]]
   elif nftp[1] == 99: 
      nftpError(nftp, api)
   return out

L1 = [386, 3, 375, 'OSE', '?', 94520, 'STL', 94520, 800, 36.2, 'A', '?', '?', 0.0, 'S'] 
L2 = [386, 3, 375, 'OSE', '?', 94520, 'STL', 94520, 800, 36.2, 'A', '?', '?', 0.0, 'S'] 
L3 = [386, 3, 375, 'OSE', '?', 94520, 'STL', 94520, 800, 36.2, 'A', '?', '?', 0.0, 'S'] 
api = ''    
graph_data = []

for L in [L1, L2, L3] :
    graph_data.append(nftpGeneralHandler(L,api))
print (graph_data)
[['STL', 94520, 36.2, 800, 'A', 'S'], 
 ['STL', 94520, 36.2, 800, 'A', 'S'], 
 ['STL', 94520, 36.2, 800, 'A', 'S']]

print (pd.DataFrame(graph_data))
     0      1     2    3  4  5
0  STL  94520  36.2  800  A  S
1  STL  94520  36.2  800  A  S
2  STL  94520  36.2  800  A  S