2016-07-21 12 views
1

OK, ich habe den ganzen Nachmittag mit diesem den Kopf gegen die Wand geschlagen. Ich weiß, dass es viele ähnliche Beiträge gibt, aber ich bekomme immer Fehler und mache wahrscheinlich einen dummen Fehler.JSON formatierte Zeichenfolge zu Pandas Datenrahmen

Ich bin mit dem apyori Paket hier eine Transaktion Korbanalyse zu tun: https://pypi.python.org/pypi/apyori/1.1.1

Es scheint, dass die Pakete dump_as_json() Methode für jeden möglichen Korb Wörterbücher von RelationRecords ausspuckt.

Ich möchte diese JSON-formatierten Wörterbücher in einen Pandas-Dataframe aufnehmen, aber hatte Passungen mit verschiedenen Fehlern beim Versuch, pd.read_json() zu verwenden.

Hier ist mein Code:

import apyori, shutil, os 
from apyori import apriori 
from apyori import dump_as_json 
import pandas as pd 
import json 

try: 
    from StringIO import StringIO 
except ImportError: 
    from io import StringIO 

transactions = [ 
    ['Jersey','Magnet'], 
    ['T-Shirt','Cap'], 
    ['Magnet','T-Shirt'], 
    ['Jersey', 'Pin'], 
    ['T-Shirt','Cap'] 
] 
results = list(apriori(transactions)) 
results_df = pd.DataFrame() 
for RelationRecord in results: 
    dump_as_json(RelationRecord,output_file) 
print output_file.getvalue() 
json_file = json.dumps(output_file.getvalue()) 
print json_file 


print data_df.head() 

Irgendwelche Ideen, wie die json formatiert Wörterbücher in output_file in eine Pandas Datenrahmen gespeichert werden?

Antwort

2

Ich würde vorschlagen, auf StackOverflow Richtlinien zur Herstellung eines Minimal, Complete, and Verifiable example nachzulesen. Auch Aussagen wie "Ich bekomme immer Fehler" sind nicht sehr hilfreich. Das heißt, ich habe mir Ihren Code und den Quellcode für dieses apyori Paket angesehen. Typos beiseite, es sieht aus wie das Problem Linie ist hier:

for RelationRecord in results: 
    dump_as_json(RelationRecord,output_file) 

Sie sind eine Ein-Objekt-per-line JSON-Datei erstellen (Ich denke, das wird manchmal bezeichnet als LSON oder Line-JSON). Als ein ganzes Dokument, es ist einfach kein gültiger JSON. Sie könnten versuchen, dies als eine Liste von homogenen Wörterbüchern oder eine andere pd.DataFrame freundliche Struktur zu halten.

output = [] 
for RelationRecord in results: 
    o = StringIO() 
    dump_as_json(RelationRecord, o) 
    output.append(json.loads(o.getvalue())) 
data_df = pd.DataFrame(output) 
Verwandte Themen