Wie fügen Sie ein Wörterbuch, um ein pandas dataframe?
Habe ich eine Reihe von urls, die von json-Dateien und eine leere pandas dataframe mit Spalten, in denen die Attribute der jsnon-Dateien. Nicht alle json-Dateien haben alle die Attribute in der pandas dataframe. Was ich tun müssen, ist, erstellen Sie Wörterbücher aus dem json-Dateien und fügen Sie jedem Wörterbuch zu den pandas dataframe wie eine neue Zeile und, im Fall, dass die json-Datei keine passende Attribut eine Spalte in der dataframe das muss sein gefüllt leer.
Habe ich es geschafft, zu erstellen Wörterbücher:
import urllib2
import json
url = "https://cws01.worldstores.co.uk/api/product.php?product_sku=ULST:7BIS01CF"
data = urllib2.urlopen(url).read()
data = json.loads(data)
und dann habe ich versucht, zu erstellen eine for-Schleife wie folgt:
row = -1
for i in links:
row = row + 1
data = urllib2.urlopen(str(i)).read()
data = json.loads(data)
for key in data.keys():
for column in df.columns:
if str(column) == str(key):
df.loc[[str(column)],row] = data[str(key)]
else:
df.loc[[str(column)],row] = None
wo df ist der dataframe und links ist der Satz von urls
Jedoch bekomme ich die folgende Fehlermeldung:
raise KeyError('%s not in index' % objarr[mask])
KeyError: "['2_seater_depth_mm'] not in index"
wo ['2_seater_depth_mm'] ist die erste Spalte der pandas dataframe
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mir folgenden code funktioniert:
Haben Sie gemischter Reihenfolge der Argumente im
.loc()
und haben viel[]
dtype='str'
Von Fehler, die ich davon ausgehen, dass einige der Spalten sind mit int-Werten, so kann man nicht speichern text. Versuchen zu definieren, df Spalten als str und nach dem laden von Daten manipulieren mit Typen.Unter der Annahme, dass
df
ist leer und hat die gleichen Spalten wie die url, dictionary-keys, d.h.dann können Sie pandas.Anhängen
Nicht ganz sicher, warum dein code nicht funktioniert, aber Bedenken Sie die folgenden paar Bearbeitungen, die sollte aufzuräumen, sollten Sie immer noch wollen, um es zu nutzen:
Ich verwendet
aufzählen
zur Iteration über den index und den Wert von links-array, auf diese Weise brauchen Sie nicht einen index-Zähler (row
im code) und dann habe ich die.items
Wörterbuch-Methode, so kann ich Durchlaufen Schlüssel und Werte auf einmal. Ich glaube, pandas wird automatisch Griff das leere dataframe Einträge.