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

我已经研究并测试了一整天的方法来做到这一点,虽然我发现了一些有帮助的主题,但到目前为止没有任何东西可以 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 json




def 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 文件后,格式应如下所示:


用户名、加入日期、期间


MMTTMM
浏览 283回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python