wäre IIUC Sie json_normalize() Methode verwenden:
In [78]: d = {
...: "_id": "581b1b0d077ad53847d27340",
...: "index" : 0,
...: "item" : {
...: "bought": 5.00,
...: "sold": 7.49}
...: }
...:
In [79]: pd.io.json.json_normalize(d)
Out[79]:
_id index item.bought item.sold
0 581b1b0d077ad53847d27340 0 5.0 7.49
UPDATE: Parsing mehrere Einträge/Zeilen:
In [162]: data = [
...: {"_id": "581b1b0d077ad53847d27340",
...: "index" : 0,
...: "item" : {
...: "bought": 5.00,
...: "sold": 7.49}
...: },
...: {"_id": "581b1b0d077ad53847d21111",
...: "index" : 1,
...: "item" : {
...: "bought": 55.00,
...: "sold": 99.99}
...: },
...: ]
...:
In [163]: pd.io.json.json_normalize(data)
Out[163]:
_id index item.bought item.sold
0 581b1b0d077ad53847d27340 0 5.0 7.49
1 581b1b0d077ad53847d21111 1 55.0 99.99
PS data
ist eine Liste der Wörterbücher, wobei jedes Wörterbuch einen Eintrag/row
UPDATE2 repräsentiert: wenn MongoDB kehrt item
als String: "{'bought':5.00,'sold':'7.49'}"
- wir können Vorprozess die Daten auf folgende Weise:
In [168]: from ast import literal_eval
In [169]: data
Out[169]:
[{'_id': '0d', 'item': "{'bought':5.00,'sold':'7.49'}"},
{'_id': '1e', 'item': "{'bought':55.00,'sold':'157.90'}"}]
In [171]: for i,x in enumerate(data):
...: data[i]['item'] = literal_eval(x['item'])
...:
In [172]: data
Out[172]:
[{'_id': '0d', 'item': {'bought': 5.0, 'sold': '7.49'}},
{'_id': '1e', 'item': {'bought': 55.0, 'sold': '157.90'}}]
In [173]: pd.io.json.json_normalize(data)
Out[173]:
_id item.bought item.sold
0 0d 5.0 7.49
1 1e 55.0 157.90
Erläuterung:
In [170]: [literal_eval(x['item']) for x in data]
Out[170]: [{'bought': 5.0, 'sold': '7.49'}, {'bought': 55.0, 'sold': '157.90'}]
'db.data.find()' return 'json'? – jezrael
ich folge nicht, sorry – WGP
gleiche Idee wie 'MaxU' - verwenden' json_normalize'. – jezrael