我已经研究并测试了一整天的方法来做到这一点,虽然我发现了一些有帮助的主题,但到目前为止没有任何东西可以 100% 有效。我在 Python 文档和 Stack Overflow 上找到了有关如何将字典字典转换为数据框的信息,但我正在使用的数据结构与这些示例中的数据结构存在显着差异。让我首先描述我的数据来自哪里以及它是什么样子。我正在从在线国际象棋网站的公共 API 接收数据。数据位于 JSON 文件中,包含有关站点成员的信息,并按成员的活跃程度(每周、每月和所有时间)进行细分,并包括成员用户名和他加入的日期。以下是该数据结构的示例: { "weekly": [ { "username": "string", //username "joined": "integer", //timestamp } ], "monthly": [ { "username": "string", //username "joined": "integer", //timestamp } ], "all_time": [ { "username": "string", //username "joined": "integer", //timestamp } ]}我的目标是将这些数据放入 Jupyter Notebook 中的 Pandas df 中,以便我可以创建图表来显示成员的活跃程度。显然,使用 pd.DataFrame.from_dict(data) 会引发错误。我需要解析数据并将其以 Pandas 可以处理的格式写入文件。到目前为止,我的代码正在将用户名和连接数据写入名为 members.conf 的文件中。有两件事我需要解决。1. 我需要包含高级关键数据(Weeks、Months 和 all_time)并将其包含在我的成员文件中。每个 Key 应该只在文件中出现一次,然后是该类别的所有用户数据(即在该时期内活跃的用户)。2. 我需要弄清楚如何格式化文件中的数据,以便 Pandas 可以将其放入 df 中。目前,用户名和连接数据被写入文件,以空格作为分隔符。这是代码。它运行没有错误,所以如果你愿意,你可以运行它。import requests import jsondef getPlayerNames(): headers = { 'User-Agent': ' @Knightburgler/1.0 (Python 3.x)', 'Accept-encoding': 'gzip' } url = 'https://api.chess.com/pub/club/team-iowa/members' response = requests.get(url, headers) response.raise_for_status() data = response.json() fp = open('members.txt', 'w') for period in data["weekly"], data["monthly"], data["all_time"]: for k in period: fp.write(k['username'] + " " + str(k['joined']) + " ") fp.close()def main(): getPlayerNames()if __name__ == "__main__": main()# eof将数据写入 CSV 文件后,格式应如下所示:用户名、加入日期、期间
添加回答
举报
0/150
提交
取消