将Dictionary解压缩为单个DataFrame



我有一个复杂的Dictionary,我想把它解压到一个DataFrame中,但我想不通。我想将"rows"中包含的数据(即所有数据都包含在[]中(解压缩为一个DataFrame("row"(我已经尝试了很多访问字典内部的组合,但都没有成功。

数据如下:

{None: {'transfers': {'1': {'rows': [{'pointOfSaleID': 2,
'initialAmount': '£0.00',
'opened': 'xx, 27/11/2018 11:58',
'dayIncome': '£336.23',
'cash': [{'dateTime': '27/11/2018 18:23',
'employeeName': 'xx',
'sum': '-£45.00',
'comment': 'cabs to collect in store stocknEvents'}],
'cashTotal': '£291.23',
'cashExpected': '£291.23',
'closed': 'xx, 27/11/2018 20:54',
'banked': '£0.00',
'left': '£0.00',
'totalCounted': '£0.00',
'difference': '-£291.23',
'varianceReason': '',
'totalTransactions': 48},
{'pointOfSaleID': 2,
'initialAmount': '£0.00',
'opened': 'xx, 28/11/2018 09:16',
'dayIncome': '£35.94',
'cashTotal': '£35.94',
'cashExpected': '£35.94',
'closed': '----',
'banked': '----',
'left': '----',
'totalCounted': '----',
'difference': '----',
'varianceReason': '',
'totalTransactions': 3}...]

如何仅访问行中的数据并将其解压缩到DataFrame中?

假设你的字典名为"d",这应该会得到嵌套dict的列表,每个记录(每行(有一个dict:

d[None]['transfers']['1']['rows']

您应该能够将其传递到DataFrame构造函数:

df = pd.DataFrame(d[None]['transfers']['1']['rows'])

如果这样做有效,那么在列cash的每个条目中都会出现嵌套字典。为了解决这个问题,我将向您介绍[json_normalize](https://pandas.pydata.org/pandas-docs/stable/generated/pandas.io.json.json_normalize.html),这个SO线程可能会帮助您理解:带有嵌套json 的pandas.io.json.json_nnormalize

from_dict函数应该适用于您的情况。以下文档非常好:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.from_dict.html

最新更新