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

时间:2018-10-10 19:23:21

标签: python pandas dictionary dataframe

我已经研究和测试了整整一天的方法,尽管我发现一些有用的话题,但到目前为止100%都没有奏效。我已经在Python文档和Stack Overflow中找到了有关如何将字典词典转换为数据框的信息,但是我正在使用的数据结构与这些示例中的数据结构有很大不同。让我首先描述我的数据来自何处以及它的样子。

我正在从在线国际象棋网站的公共API接收数据。数据位于JSON文件中,包含有关网站成员的信息,并按成员的活跃程度(每周,每月和All_Time)细分,包括成员用户名和加入日期。以下是该数据的结构示例:

 {
  "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可以处理的格式写入文件。到目前为止,我的代码是将用户名和联接的数据写入一个名为member的文件中。我需要解决两件事。 1.我需要包括高级关键数据(周,月和all_time),并将其包括在我的成员文件中。每个密钥在文件中应该只显示一次,然后跟随该类别的所有用户数据(即,那个时期内谁处于活动状态)。 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文件后,格式应如下所示:

用户名,加入日期,期限

1 个答案:

答案 0 :(得分:0)

您可以使用词典列表创建DataFrame。如下

df.to_csv(filename)

一旦有了DataFrame。保存起来就像:

find_values()