我已经研究和测试了整整一天的方法,尽管我发现一些有用的话题,但到目前为止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文件后,格式应如下所示:
用户名,加入日期,期限
答案 0 :(得分:0)
您可以使用词典列表创建DataFrame。如下
df.to_csv(filename)
一旦有了DataFrame。保存起来就像:
find_values()