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)这是我的数据,这是一个列表:
[{'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作为它们的项目的列表。当我使用
df = pd.json_normalize(mat)这些带有分词的名单如下图所示:

在上面的图中,列home_team.managers有一个dict作为其元素。但是,我需要它的dict中的每个元素都是一个列,并将相应的值作为行。
发布于 2020-06-08 03:12:44
尝试使用此方法,test.txt有您在上面发布的数据:
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 Spainhttps://stackoverflow.com/questions/62231815
复制相似问题