如何从API调用中解析来自API调用的记录?

时间:2016-07-26 15:17:05

标签: python api parsing pandas dataframe

我正在尝试根据" EventDate"过滤日期值。来自salesforce exacttarget中的API响应,来自调用内部。

我得到的SOAP响应如下:

(BounceEvent){
   Client = 
      (ClientID){
         ID = 11111111
      }
   PartnerKey = None
   CreatedDate = 2016-05-09 13:57:11.000403
   ModifiedDate = 2016-05-09 13:57:11.000403
   ID = 1111111111
   ObjectID = "1111111111"
   SendID = 1111111111
   SubscriberKey = "aaaaa@aaaaaa.aaa"
   EventDate = 2016-05-09 13:57:11.000403
   EventType = "OtherBounce"
   TriggeredSendDefinitionObjectID = "11111"
   BatchID = 111
   SMTPCode = "1"
   BounceCategory = "aaaaaa"
   SMTPReason = "aaaa "
   BounceType = "immediate"
 }]

我想设置一些逻辑,如果" EventDate"在解析为Dataframe之前,在API调用中介于2016-07-20到2016-07-22(示例)之间。这甚至可能吗? SOAP响应保存在变量" ResponseResultsBounces"

我已成功将数据移动到pandas数据帧中,但我一直在尝试从数据帧中解析EventDate但没有运气。我在第85和91行尝试这个。

代码:

import ET_Client
import pandas as pd


AggreateDF = pd.DataFrame()
Data_Aggregator = pd.DataFrame()
Start_Date = "2016-02-20" 
End_Date = "2016-05-25"
retrieveDate = '2016-07-25T13:00:00.000'
Export_Dir = 'C:/temp/'

try:

    debug = False
    stubObj = ET_Client.ET_Client(False, debug)






    print '>>>BounceEvents'
    getBounceEvent = ET_Client.ET_BounceEvent()
    getBounceEvent.auth_stub = stubObj    
    getResponse1 = getBounceEvent.get()
    ResponseResultsBounces = getResponse1.results
    Results_Message = getResponse1.message
    #EventDate = "2016-05-09"
    #print "This is orginial " + str(Results_Message)
    #print ResponseResultsBounces

    i = 1
    while (Results_Message == 'MoreDataAvailable'):
        #if i > 5: break
        #print Results_Message
        #results1 = getResponse1.results
        #i = i + 1
        ClientIDBounces = []
        partner_keys1 = []
        created_dates1 = []
        modified_date1 = []
        ID1 = []
        ObjectID1 = []
        SendID1 = []
        SubscriberKey1 = []
        EventDate1 = []
        EventType1 = []
        TriggeredSendDefinitionObjectID1 = []
        BatchID1 = []
        SMTPCode = []
        BounceCategory = []
        SMTPReason = []
        BounceType = []

        for BounceEvent in ResponseResultsBounces:
            ClientIDBounces.append(str(BounceEvent['Client']['ID']))
            partner_keys1.append(BounceEvent['PartnerKey'])
            created_dates1.append(BounceEvent['CreatedDate'])
            modified_date1.append(BounceEvent['ModifiedDate'])
            ID1.append(BounceEvent['ID'])
            ObjectID1.append(BounceEvent['ObjectID'])
            SendID1.append(BounceEvent['SendID'])
            SubscriberKey1.append(BounceEvent['SubscriberKey'])
            EventDate1.append(BounceEvent['EventDate'])
            EventType1.append(BounceEvent['EventType'])
            TriggeredSendDefinitionObjectID1.append(BounceEvent['TriggeredSendDefinitionObjectID'])
            BatchID1.append(BounceEvent['BatchID'])
            SMTPCode.append(BounceEvent['SMTPCode'])
            BounceCategory.append(BounceEvent['BounceCategory'])
            SMTPReason.append(BounceEvent['SMTPReason'])
            BounceType.append(BounceEvent['BounceType'])

        df1 = pd.DataFrame({'ClientID': ClientIDBounces, 'PartnerKey': partner_keys1,
                       'CreatedDate' : created_dates1, 'ModifiedDate': modified_date1, 
                       'ID':ID1, 'ObjectID': ObjectID1,'SendID':SendID1,'SubscriberKey':SubscriberKey1,
                       'EventDate':EventDate1,'EventType':EventType1,'TriggeredSendDefinitionObjectID':TriggeredSendDefinitionObjectID1,
                       'BatchID':BatchID1,'SMTPCode':SMTPCode,'BounceCategory':BounceCategory,'SMTPReason':SMTPReason,'BounceType':BounceType})          
        #print df1
        #df1 = df1[(df1.EventDate > "2016-02-20") & (df1.EventDate < "2016-03-25")]

        print(df1['ID'].max())            
        AggreateDF = AggreateDF.append(df1)   
        print(AggreateDF.shape)

    AggreateDF = AggreateDF[(AggreateDF.EventDate > Start_Date) & (AggreateDF.EventDate < End_Date)]
    print("Final Aggregate DF is: " + str(AggreateDF.shape))

    #EXPORT TO CSV
    AggreateDF.to_csv(Export_Dir +'DataTest1.csv')
        #with pd.option_context('display.max_rows',10000):
            #print (df_masked1.shape)
        #print df_masked1 



except Exception as e:
    print 'Caught exception: ' + e.message
    print e

提前谢谢你!

0 个答案:

没有答案
相关问题