为了账号安全,请及时绑定邮箱和手机立即绑定

(python) 如何将字典值转换为 pandas DataFrame

(python) 如何将字典值转换为 pandas DataFrame

Smart猫小萌 2022-11-01 14:48:42
我的问题如下:我有一个 txt 文件,它只包含一个带有一个键的字典。该单个键的值是一个包含字典作为列表条目的巨大列表。用于比较的第一个键:值对:"data": [{"type": "utl", "id": "53150", "attributes": {"timestamp": "T13:00:00Z", "count": 0.0}}, [...etc.]我尝试了以下方法,通过调用 .values 方法然后使用 list() 将单键字典的值转换为列表:list_variable = list(dict_variable.values())但似乎这只是将值转换为只有一个索引的列表,因为当我尝试调用索引 0 时文件崩溃(列表太大),如果我尝试调用索引 1,我会收到一个 KeyError 说明索引超出范围。(我目前的想法是首先将其转换为列表,然后转换为 DataFrame)我是一个该死的初学者,不知道我还能尝试什么。我错过了什么?提前非常感谢!fpr 您的有用意见!
查看完整描述

2 回答

?
慕仙森

TA贡献1827条经验 获得超8个赞

以下代码对您有帮助吗?


测试.txt


"data": [{"type": "utl", "id": "53150", "attributes": {"timestamp": "T13:00:00Z", "count": 0.0}}, {"type": "utl2", "id": "53151", "attributes": {"timestamp": "T12:00:00Z", "count": 1.0}}]

from re import findall

from pandas.io.json import json_normalize


with open("test.txt") as f:

    print(json_normalize(eval(findall("{.+}", f.read())[0])))

输出:


   type     id attributes.timestamp  attributes.count

0   utl  53150           T13:00:00Z               0.0

1  utl2  53151           T12:00:00Z               1.0


查看完整回答
反对 回复 2022-11-01
?
富国沪深

TA贡献1790条经验 获得超9个赞

对我来说看起来像一个json。尝试使用pandas.json_normalize


d = {"data": [{"type": "utl", "id": "53150", "attributes": {"timestamp": "T13:00:00Z", "count": 0.0}}]}

pd.json_normalize(d['data'])


  type     id attributes.timestamp  attributes.count

0  utl  53150           T13:00:00Z               0.0


查看完整回答
反对 回复 2022-11-01
  • 2 回答
  • 0 关注
  • 165 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号