【问题标题】:Appending incomming api data to pandas dataframe, what is wrong with my function?将传入的 api 数据附加到 pandas 数据帧,我的函数有什么问题?
【发布时间】:2016-11-18 08:53:28
【问题描述】:

我正在接收 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)

【问题讨论】:

    标签: python list pandas


    【解决方案1】:

    我认为您可以在每个函数循环中返回所需的数据并将它们附加到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
    

    【讨论】:

    • 我应该提到:数据 nftp 是流式传输的,即每次有新的谎言或有时同时出现几行时,“nftpGeneralHandler”应该将数据附加到数据帧,而不是重新开始空数据框,只有一个空列表 IIUC。
    • 再次感谢您的帮助 :)
    猜你喜欢
    • 2023-04-10
    • 1970-01-01
    • 2015-12-21
    • 2020-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-05
    • 1970-01-01
    相关资源
    最近更新 更多