首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用json_normalize()迭代?

如何使用json_normalize()迭代?
EN

Stack Overflow用户
提问于 2020-06-06 12:36:08
回答 1查看 270关注 0票数 0
代码语言:javascript
复制
   match_files = []
        for x in glob.glob(r'path\**\*.json', recursive=True):
        match_files.append(x)

with open (match_files[0],encoding ='utf8') as fh:
            mat = json.load(fh)

这是我的数据,这是一个列表:

代码语言:javascript
复制
[{'id': 1816, 'name': 'Constantin Gâlcă', 'nickname': None, 'dob': '1972-03-08', 'country': {'id': 187, 'name': 'Romania'}}]
[{'id': 793, 'name': 'Luis Enrique Martínez García', 'nickname': 'Luis Enrique', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 230, 'name': 'Diego Pablo Simeone', 'nickname': None, 'dob': None, 'country': {'id': 11, 'name': 'Argentina'}}]
[{'id': 238, 'name': 'Enrique Setién Solar', 'nickname': 'Quique Setién', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 793, 'name': 'Luis Enrique Martínez García', 'nickname': 'Luis Enrique', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 793, 'name': 'Luis Enrique Martínez García', 'nickname': 'Luis Enrique', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
nan
[{'id': 793, 'name': 'Luis Enrique Martínez García', 'nickname': 'Luis Enrique', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 793, 'name': 'Luis Enrique Martínez García', 'nickname': 'Luis Enrique', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
nan
[{'id': 238, 'name': 'Enrique Setién Solar', 'nickname': 'Quique Setién', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 25, 'name': 'Santiago Hernán Solari Poggio', 'nickname': None, 'dob': '1976-10-07', 'country': {'id': 11, 'name': 'Argentina'}}]
[{'id': 227, 'name': 'Ernesto Valverde Tejedor', 'nickname': 'Ernesto Valverde', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 227, 'name': 'Ernesto Valverde Tejedor', 'nickname': 'Ernesto Valverde', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 229, 'name': 'Eusebio Sacristán Mena', 'nickname': 'Eusebio Sacristán', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 227, 'name': 'Ernesto Valverde Tejedor', 'nickname': 'Ernesto Valverde', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 677, 'name': 'Joan Francesc Ferrer Sicilia', 'nickname': 'Rubí', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 227, 'name': 'Ernesto Valverde Tejedor', 'nickname': 'Ernesto Valverde', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 221, 'name': 'José Luis Mendilibar Etxebarria', 'nickname': None, 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 187, 'name': 'Abelardo Fernández Antuña', 'nickname': None, 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 227, 'name': 'Ernesto Valverde Tejedor', 'nickname': 'Ernesto Valverde', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 234, 'name': 'Pablo Javier Machín Díez', 'nickname': 'Pablo Machín', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 227, 'name': 'Ernesto Valverde Tejedor', 'nickname': 'Ernesto Valverde', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 227, 'name': 'Ernesto Valverde Tejedor', 'nickname': 'Ernesto Valverde', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 576, 'name': 'Sergio González Soriano', 'nickname': None, 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 227, 'name': 'Ernesto Valverde Tejedor', 'nickname': 'Ernesto Valverde', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 211, 'name': 'Marcelino García Toral', 'nickname': None, 'dob': '1965-08-14', 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 227, 'name': 'Ernesto Valverde Tejedor', 'nickname': 'Ernesto Valverde', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 227, 'name': 'Ernesto Valverde Tejedor', 'nickname': 'Ernesto Valverde', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 227, 'name': 'Ernesto Valverde Tejedor', 'nickname': 'Ernesto Valverde', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 227, 'name': 'Ernesto Valverde Tejedor', 'nickname': 'Ernesto Valverde', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 182, 'name': 'Javier Calleja Revilla', 'nickname': 'Javi Calleja', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 219, 'name': 'Francisco José López Fernández', 'nickname': 'Paco López', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 767, 'name': 'Gaizka Garitano Aguirre', 'nickname': 'Gaizka Garitano', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
[{'id': 228, 'name': 'José Bordalás Jiménez', 'nickname': 'José Bordalás', 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
nan
nan
nan
nan
nan
nan
nan
nan
nan
[{'id': 36, 'name': 'Josep Guardiola i Sala', 'nickname': None, 'dob': None, 'country': {'id': 214, 'name': 'Spain'}}]
nan

如何将其转换为具有字典中的每个元素作为列名及其在相应行中的值的dataframe。这里有一些元素,它们是包含dicts作为它们的项目的列表。当我使用

代码语言:javascript
复制
df = pd.json_normalize(mat)

这些带有分词的名单如下图所示:

在上面的图中,列home_team.managers有一个dict作为其元素。但是,我需要它的dict中的每个元素都是一个列,并将相应的值作为行。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-08 03:12:44

尝试使用此方法,test.txt有您在上面发布的数据:

代码语言:javascript
复制
dfs = []
with open('test.txt', 'r+') as f:
    for line in f:

        line = line.replace("'", '"')
        line = line.replace("None", '"None"')
        line = line.replace("nan", '[]')
        data = json.loads(line)
        df = pd.json_normalize(data)
        dfs.append(df)

df = pd.concat(dfs).reset_index(drop=['index'])
print(df)

      id                             name           nickname         dob  country.id country.name
0   1816                 Constantin Gâlcă               None  1972-03-08         187      Romania
1    793     Luis Enrique Martínez García       Luis Enrique        None         214        Spain
2    230              Diego Pablo Simeone               None        None          11    Argentina
3    238             Enrique Setién Solar      Quique Setién        None         214        Spain
4    793     Luis Enrique Martínez García       Luis Enrique        None         214        Spain
5    793     Luis Enrique Martínez García       Luis Enrique        None         214        Spain
6    793     Luis Enrique Martínez García       Luis Enrique        None         214        Spain
7    793     Luis Enrique Martínez García       Luis Enrique        None         214        Spain
8    238             Enrique Setién Solar      Quique Setién        None         214        Spain
9     25    Santiago Hernán Solari Poggio               None  1976-10-07          11    Argentina
10   227         Ernesto Valverde Tejedor   Ernesto Valverde        None         214        Spain
11   227         Ernesto Valverde Tejedor   Ernesto Valverde        None         214        Spain
12   229           Eusebio Sacristán Mena  Eusebio Sacristán        None         214        Spain
13   227         Ernesto Valverde Tejedor   Ernesto Valverde        None         214        Spain
14   677     Joan Francesc Ferrer Sicilia               Rubí        None         214        Spain
15   227         Ernesto Valverde Tejedor   Ernesto Valverde        None         214        Spain
16   221  José Luis Mendilibar Etxebarria               None        None         214        Spain
17   187        Abelardo Fernández Antuña               None        None         214        Spain
18   227         Ernesto Valverde Tejedor   Ernesto Valverde        None         214        Spain
19   234         Pablo Javier Machín Díez       Pablo Machín        None         214        Spain
20   227         Ernesto Valverde Tejedor   Ernesto Valverde        None         214        Spain
21   227         Ernesto Valverde Tejedor   Ernesto Valverde        None         214        Spain
22   576          Sergio González Soriano               None        None         214        Spain
23   227         Ernesto Valverde Tejedor   Ernesto Valverde        None         214        Spain
24   211           Marcelino García Toral               None  1965-08-14         214        Spain
25   227         Ernesto Valverde Tejedor   Ernesto Valverde        None         214        Spain
26   227         Ernesto Valverde Tejedor   Ernesto Valverde        None         214        Spain
27   227         Ernesto Valverde Tejedor   Ernesto Valverde        None         214        Spain
28   227         Ernesto Valverde Tejedor   Ernesto Valverde        None         214        Spain
29   182           Javier Calleja Revilla       Javi Calleja        None         214        Spain
30   219   Francisco José López Fernández         Paco López        None         214        Spain
31   767          Gaizka Garitano Aguirre    Gaizka Garitano        None         214        Spain
32   228            José Bordalás Jiménez      José Bordalás        None         214        Spain
33    36           Josep Guardiola i Sala               None        None         214        Spain
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62231815

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档