Проблема в выравнивании файла Json в Python - PullRequest
0 голосов
/ 16 октября 2018

У меня есть файл json, который содержит запись голов, забитых в протоколе игры.Я попытался сгладить его, используя следующий код:

data_Loc ='Season Fixtures.json'
with open(data_Loc) as data_file:    
    d= json.load(data_file)  
df_Fixtures = pd.io.json.json_normalize(d,'matches')

Вывод выглядит следующим образом:

Pls see here

Затем я конвертирую целидля последовательного использования:

df_goal = df_Fixtures.goals.apply(pd.Series)

и вывод будет следующим:

enter image description here

Включает в себя еще один словарь в столбцах.

Как преобразовать столбец целей непосредственно в периоды?

Файл входных данных можно загрузить с здесь

Может кто-нибудь посоветовать мне, как сгладитьпоследняя часть столбца цели?Это означает, что столбцы целей будут преобразованы в несколько столбцов, таких как Период, минуты, playerId, TeamId, Тип.

Чтобы включить matchId , я создаю новый фрейм данных следующим образом и объединяюсь спредыдущий кадр данных, рекомендованный Джезом, следующий:

df_MatchID = pd.io.json.json_normalize(d,'matches')
df_MatchID = df_MatchID[['matchId']]
df_Fixtures_details = pd.concat([df_MatchID,df_Fixtures],axis =1)

Вывод следующий (другие столбцы показывают NaN :) enter image description here

Спасибо Zep

1 Ответ

0 голосов
/ 16 октября 2018

Я считаю, что вам нужно:

df_Fixtures = pd.io.json.json_normalize(d, ['matches','goals'])

print (df_Fixtures.head())
   minute      period  playerId  teamId  type
0      14   FirstHalf    206314    3161  goal
1      72  SecondHalf     20661    3204  goal
2      78  SecondHalf    206314    3161  goal
3       3   FirstHalf    300830    3187  goal
4      72  SecondHalf     21385    3187  goal

РЕДАКТИРОВАТЬ:

data_Loc ='Season Fixtures.json'
with open(data_Loc) as data_file:    
    d= json.load(data_file)['matches'] 

df = pd.io.json.json_normalize(d, ['goals'],'matchId')

print (df.head())
   minute      period  playerId  teamId  type  matchId
0      14   FirstHalf    206314    3161  goal  2759508
1      72  SecondHalf     20661    3204  goal  2759508
2      78  SecondHalf    206314    3161  goal  2759508
3       3   FirstHalf    300830    3187  goal  2759507
4      72  SecondHalf     21385    3187  goal  2759507
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...