将字典解包到单个 DataFrame 中
Posted
技术标签:
【中文标题】将字典解包到单个 DataFrame 中【英文标题】:Unpack Dictionary into Single DataFrame 【发布时间】:2019-04-30 08:54:30 【问题描述】:我有一个复杂的字典,我想将它解压缩到单个 DataFrame 中,但我无法弄清楚。 我想将'rows'中包含的数据(即所有都包含在[]中)解压缩到单个DataFrame('rows')中 我尝试了很多在字典中访问的组合都无济于事。
这是数据:
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 stock\nEvents'],
'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 中?
【问题讨论】:
你试过 df = pd.DataFrame(data[None]['transfers']['1']['rows']) 其中 data 是一个包含你的数据的字典吗?跨度> 【参考方案1】:from_dict 函数应该适用于您的情况。以下文档非常好:https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.from_dict.html
【讨论】:
我不认为to_dict
在这里有用。 OP 想要将 list/dict 结构的某些部分转换为 DataFrame - to_dict
与此相反。
你是对的,我的错。它应该是 from_dict。我将编辑回复。【参考方案2】:
假设您的字典名为“d”,这应该会得到嵌套字典的列表,每条记录(每行)一个字典:
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线程可能会帮助你理解:pandas.io.json.json_normalize with very nested json
【讨论】:
@lmonty,很高兴听到这个消息!以上是关于将字典解包到单个 DataFrame 中的主要内容,如果未能解决你的问题,请参考以下文章