Проблема в выравнивании файла Json в Python

1

У меня есть 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')

Вывод следующий:

Изображение 174551

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

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

и выход следующий:

Изображение 174551

Он включает другой словарь в столбцах.

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

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

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

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

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 :) Изображение 174551

Спасибо Zep

Теги:
pandas
parsing

1 ответ

2
Лучший ответ

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

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
  • 0
    Спасибо, Джез. Если я также хочу включить matchId, создайте еще один фрейм данных следующим образом: df_MatchID = df_MatchID [['matchId']] df_Fixtures_details = pd.concat ([df_MatchID, df_Fixtures], axis = 1) Но в выводе отображаются все Nan, кроме matchId столбцы
  • 0
    Jez, я обновил в своем вопросе для объединения matchId и df_Fixtures
Показать ещё 9 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню