2 回答

TA貢獻1797條經(jīng)驗 獲得超6個贊
您沒有寫到您只需要 data_points(如另一個答案中所示),所以我假設您希望將整個字典轉換為 DataFrame。
為此,請從您的代碼開始:
df = pd.DataFrame(historicalData)
它創(chuàng)建一個 DataFrame,其中data_points “分解”為連續(xù)行,但它們仍然是字典。
然后將open_price列重命名為open_price_all:
df.rename(columns={'open_price': 'open_price_all'}, inplace=True)
原因是為了避免在不久執(zhí)行連接后出現(xiàn)重復的列名稱 (data_points還包含open_price屬性,我希望data_points 中的相應列 “繼承”此名稱)。
下一步是創(chuàng)建一個臨時 DataFrame - 將data_points中的字典拆分為各個列:
wrk = df.data_points.apply(pd.Series)
打印wrk查看結果。
最后一步是將df與wrk連接并刪除 data_points列(不再需要,因為它被分成單獨的列):
result = df.join(wrk).drop(columns=['data_points'])

TA貢獻2019條經(jīng)驗 獲得超9個贊
通過下面的內容很容易解決這個問題。我已通過列表理解將數(shù)據(jù)框放入列表中
import pandas as pd
df_list = [pd.DataFrame(dic.items(), columns=['Parameters', 'Value']) for dic in historicalData['data_points']]
然后你可以這樣做:
df_list[0]
這將產生
Parameters Value
0 begins_at 2020-10-05T13:30:00Z
1 open_price 1.430000
2 close_price 1.430000
3 high_price 1.430000
4 low_price 1.430000
5 volume 0
6 session reg
7 interpolated False
添加回答
舉報