2016-04-20 7 views
0

Ich analysiere eine Liste von Elementen, Element für Element in Pandas Append-Funktion. pandas.DataFrame.appendPandas - Liste der Liste nicht an Datenrahmen angehängt

from pyquery import PyQuery as pq 
import pandas as pd 
import argparse 
# from glob import glob 


parser = argparse.ArgumentParser(description=None) 


def GetArgs(parser): 
    """Parser function using argparse""" 
    # parser.add_argument('directory', help='directory use', 
    #      action='store', nargs='*') 
    parser.add_argument("files", nargs="+") 
    return parser.parse_args() 

fileList = GetArgs(parser) 
print(fileList.files) 

data = [] 
frames = pd.DataFrame() 

attrs = ('id', 'horse') 

for items in fileList.files: 
    d = pq(filename=items) 
    res = d('nomination') 
    dataSets = [[res.eq(i).attr(x) 
       for x in attrs] for i in range(len(res))] 
    print(dataSets) 
    aDF = pd.DataFrame(dataSets,) 
    frames.append(aDF) 


print(frames) 

ich aus der Ausgabe sehen kann, dass ich die Daten erhalten und dass ich eine Liste von Listen in die dfame Parsen jedoch angehängt werden wird, einen leeren Datenrahmen läuft

(pyquery)[email protected]:~/Projects/pyquery$ python jqxml.py samples/*.xml 
['samples/20160402RAND0.xml'] 
[['198247', 'Astern'], ['199039', 'El Divino'], ['199616', 'Geneteau'], ['197890', 'Alliterate'], ['201416', 'Hostwin Legend'], ['202829', 'Lionhearted'], ['199619', 'Mooshakissa'], ['202345', "Let's Dream Big"], ['200794', 'Prince Chabal'], ['202766', 'Red Handle'], ['198442', "He's Our Rokkii (NZ)"], ['188683', 'Odyssey Moon'], 
... 
['193862', 'Karaka Lass'], ['193850', 'Alittle Loose'], ['191829', "Aurora's Star"], ['196396', 'Shanakee (NZ)'], ['192985', 'Rainbow Park (NZ)'], ['192983', "Daisy's Joy"], ['198039', 'Shotgun Roulette'], ['188872', "Peggy's Cove"], ['188981', 'Heartlings']] 
Empty DataFrame 
Columns: [] 
Index: [] 

Ich bin mir nicht sicher, warum das nicht hängt.

+1

Können Sie das ein lauffähiges Beispiel machen? IOW, kratzen Sie alle 'getArgs' und Datei I/O bezogenen Code und stattdessen nur einige repräsentative Daten fest codieren? –

Antwort

1

Das Problem ist, dass append keine Inplace-Funktion in Pandas ist; Es gibt das angehängte Ergebnis zurück. So müssen Sie frames als beigefügten Ergebnis neu zu definieren:

frames = frames.append(aDF) 
Verwandte Themen