【发布时间】:2021-01-04 20:46:23
【问题描述】:
我导入了 JSON 文件并将其规范化到这一点。
Team Goals
0 A {'Time': '06:09', 'P': [{'Nr': 1}, {'Nr': 5}], 'Nr': 2, 'Scored': 'Game'}
0 A {'Time': '11:07', 'P': [{'Nr': 2}, {'Nr': 3}, {'Nr': 1}], 'Nr': 7, 'Scored': 'Game'}
1 B {'Time': '20:04', 'P': [{'Nr': 9}, {'Nr': 2}], 'Nr': 4, 'Scored': 'Game'}
1 B {'Time': '35:38', 'P': [{'Nr': 3}, {'Nr': 8}, {'Nr': 4}], 'Nr': 4, 'Scored': 'Game'}
1 B {'Time': '63:21', 'P': {'Nr': 4}, 'Nr': 9, 'Scored': 'Penalty'}
这就是我想要实现的目标:
Team Goals.Time Goals.P1 Goals.P2 Goals.P3 Goals.Nr Goals.Scored
0 A '06:09' 1 5 NA 2 'Game'
0 A '11:07' 2 3 1 7 'Game'
1 B '20:04' 9 2 NA 4 'Game'
1 B '35:38' 3 8 4 4 'Game'
1 B '63:21' 4 NA NA 9 'Penalty'
我尝试过 pandas json_normalize,但它忽略了 Team 列。
import pandas as pd
pd.json_normalize(df['Goals'])
Time P Nr Scored P.Nr
0 06:09 [{'Nr': 1}, {'Nr': 5}] 2 'Game' NaN
1 11:07 [{'Nr': 2}, {'Nr': 3}, {'Nr': 1}] 7 'Game' NaN
2 20:04 [{'Nr': 9}, {'Nr': 2}] 4 'Game' NaN
3 35:38 [{'Nr': 3}, {'Nr': 8}, {'Nr': 4}] 4 'Game' NaN
4 63:21 NaN 9 'Game' 34.0
有没有办法规范化并保留 Team 列? 之后不可能合并它们,因为索引不同并且它们没有共同的列
df['Team']
0 A
0 A
1 B
1 B
1 B
【问题讨论】:
-
Team 列与索引对齐的事实似乎确实值得怀疑
-
pd.concat([df['Team'], pd.json_normalize(df.Goals)], axis=1) -
回答你的问题需要查看源JSON。
标签: python json pandas dataframe