【发布时间】:2020-05-10 13:32:51
【问题描述】:
我有一个我试图从嵌套在另一个列表中的字典中解压缩的项目列表。
然后我想将该行添加到 DataFrame。
headers = ['minutesPlayed', 'goals', 'goalsAssist', 'shotsOnTarget',
'shotsOffTarget', 'shotsBlocked', 'hitWoodwork', 'totalContest',
'penaltyMiss', 'penaltyWon', 'bigChanceMissed']
我试过的代码是:
rows = []
for groups in data['groups']:
row = []
#Summary
row.append(groups['minutesPlayed'])
row.append(groups['goals'])
row.append(groups['goalAssist'])
#Attack
row.append(groups['shotsOnTarget'])
row.append(groups['shotsOffTarget'])
row.append(groups['shotsBlocked'])
row.append(groups['hitWoodwork'])
row.append(groups['totalContest'])
row.append(groups['penaltyMiss'])
row.append(groups['penaltyWon'])
row.append(groups['bigChanceMissed'])
rows.append(row)
df = pd.DataFrame(rows, columns=headers)
但是我收到错误:
KeyError: 'shotsOnTarget'
它不允许我遍历组列表中的第二个元素。
有什么建议吗?
编辑添加打印数据[组]:
print(data['groups'])
[{'minutesPlayed': "89'", 'goals': '0', 'goalAssist': '1', 'statisticsItems': [{'minutesPlayed': 'Minutes played'}, {'goals': 'Goals'}, {'goalAssist': 'Assists'}], 'groupName': 'Summary'}, {'shotsOnTarget': '0', 'shotsOffTarget': '0', 'shotsBlocked': '1', 'hitWoodwork': '0', 'totalContest': '1 (0)', 'goals': '0', 'goalAssist': '1', 'penaltyMiss': '0', 'penaltyWon': '0', 'bigChanceMissed': '0', 'statisticsItems': [{'shotsOnTarget': 'Shots on target'}, {'shotsOffTarget': 'Shots off target'}, {'shotsBlocked': 'Shots blocked'}, {'totalContest': 'Dribble attempts (succ.)'}], 'groupName': 'Attack'}, {'touches': 55, 'accuratePass': '26 (70.3%)', 'keyPass': '1', 'totalCross': '0 (0)', 'totalLongBalls': '2 (0)', 'bigChanceCreated': '0', 'statisticsItems': [{'touches': 'Touches'}, {'accuratePass': 'Passes (acc.)'}, {'keyPass': 'Key passes'}, {'totalCross': 'Crosses (acc.)'}, {'totalLongBalls': 'Long balls (acc.)'}], 'groupName': 'Passing'}, {'possessionLost': '26', 'groundDuels': '9 (0)', 'aerialDuels': '3 (1)', 'wasFouled': '0', 'fouls': '2', 'offsides': '0', 'statisticsItems': [{'groundDuels': 'Ground duels (won)'}, {'aerialDuels': 'Aerial duels (won)'}, {'possessionLost': 'Possession lost'}, {'fouls': 'Fouls'}, {'wasFouled': 'Was fouled'}], 'groupName': 'Other'}, {'totalClearance': '0', 'clearanceOffLine': '0', 'blockedScoringAttempt': '0', 'interceptionWon': '0', 'totalTackle': '0', 'challengeLost': '1', 'lastManTackle': '0', 'errorLeadToShot': '0', 'errorLeadToGoal': '0', 'ownGoals': '0', 'penaltyConceded': '0', 'statisticsItems': [{'totalClearance': 'Clearances'}, {'blockedScoringAttempt': 'Blocked shots'}, {'interceptionWon': 'Interceptions'}, {'totalTackle': 'Tackles'}, {'challengeLost': 'Dribbled past'}], 'groupName': 'Defence'}]
【问题讨论】:
-
'shotsOnTarget'是第二个元素,只能在循环的第二次迭代中访问。 -
您好 Austin,感谢您的快速回复,您将如何访问循环中的第二次迭代?
-
@SunilChavda
headerslist 有什么作用吗? -
@shivank98 是的,我正在为我的 DataFrame 中的列名使用标题列表
-
@SunilChavda 你能把
data['groups']打印出来吗?我没有从图像中得到什么
标签: python loops dictionary