2017-05-18 3 views
0

Das sollte einfach sein, aber ich habe eine harte Zeit damit. Im Grunde genommen habe ich 4 Strings, die ich für jede Iteration meiner for-Schleife erzeuge und dann zu einer Liste hinzufüge. Ich möchte alle 4 Elemente eine Zeile und ich muss in der Lage sein, die 4 Spalten Header-Werte geben. Das sieht nach einem Job für Pandas aus, aber ich kann es einfach nicht so bekommen, wie ich es brauche. Vielen Dank im Voraus für Ihre Unterstützung. Hier ist, was ich bisher:Wie man einen Pandas Datenrahmen mit mehreren Spalten aus der Liste generiert

def main(): 

    credentials = get_credentials() 
    http = credentials.authorize(httplib2.Http()) 
    service = discovery.build('calendar', 'v3', http=http) 
    deadline_list = [] 
    pattern1 = re.compile(r'(?::)(.+$)') 
    pattern2 = re.compile(r'(?:.+:\s+)(\w+\s+\w+)') 

    StartDate = '2017-05-14' 
    EndDate = '2017-05-19' 

    print('\nGetting events within date range\n') 
    eventsResult = service.events().list(
     calendarId='primary', timeMin=StartDate+'T00:00:01.000Z', timeMax=EndDate+'T23:59:59.000Z', 
     singleEvents=True, 
     orderBy='startTime').execute() 
    events = eventsResult.get('items', []) 

    if not events: 
     print('No upcoming events found.') 

    for event in events: 
     if re.search('^\d+',event['location']): 

      start = event['start'].get('dateTime', event['start'].get('date')) 
      deadline_type = pattern1.search(event['description']).group(1).rstrip('\r') 
      client_name = pattern2.match(event['description']).group(1) 
      location = ' '.join(event['location'].split()) 
      deadline_list.extend([location, start, deadline_type, client_name]) 

     else: 
      pass 

    print(deadline_list) 

Antwort

0

Wenn Sie deadline_list zu Pandas sind vorbei, die Sie verwenden möchten:

deadline_list.append([location, start, deadline_type, client_name]) 

statt .extend. Dies wird eine Liste von Listen erstellen, die Pandas akzeptieren, wenn ein Datenrahmen über

df = pd.DataFrame(deadline_list, columns=['location','start','deadline_type','client_name']) 

Auch Erstellen Sie else: pass nicht brauchen, wenn die Bedingung in der if Aussage nicht True ist, wird nichts passieren sowieso .

+0

Süß, es funktioniert! Danke, James! – Ryan

Verwandte Themen