У меня есть 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')
Вывод следующий:
Затем я конвертирую цели в серию, используя:
df_goal = df_Fixtures.goals.apply(pd.Series)
и выход следующий:
Он включает другой словарь в столбцах.
Как я могу конвертировать столбцы целей непосредственно в периоды?
Файл входных данных можно загрузить здесь
Может ли кто-нибудь посоветовать мне, как сгладить последнюю часть столбца цели? Это означает, что столбцы целей будут преобразованы в несколько столбцов, таких как 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 :)
Спасибо Zep
Я считаю, что вам нужно:
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