[英]Converting A Dictionary Of Lists That Contain Dictionaries To A 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文件后,格式應如下所示:
用戶名,加入日期,期限
您可以使用字典列表創建DataFrame。 如下
rows = []
for period in data:
for k in data[period]:
rows.append({'username': k['username'], 'joined':k['joined'], 'period': period})
df = pd.DataFrame(rows)
一旦有了DataFrame。 保存起來很簡單:
df.to_csv(filename)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.