为了账号安全,请及时绑定邮箱和手机立即绑定

将包含字典的列表字典转换为数据框

将包含字典的列表字典转换为数据框

MMTTMM 2021-07-01 10:11:47
我已经研究并测试了一整天的方法来做到这一点,虽然我发现了一些有帮助的主题,但到目前为止没有任何东西可以 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 文件后,格式应如下所示:用户名、加入日期、期间
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 282 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信