簡體   English   中英

Pandas 將 JSON 字符串轉換為 Dataframe - Python

[英]Pandas convert JSON string to Dataframe - Python

我有一個需要轉換為具有所需列名的數據框的 json 字符串。

my_json = {'2017-01-03': {'open': 214.86,
  'high': 220.33,
  'low': 210.96,
  'close': 216.99,
  'volume': 5923254},
'2017-12-29': {'open': 316.18,
  'high': 316.41,
  'low': 310.0,
  'close': 311.35,
  'volume': 3777155}}

使用下面的代碼沒有給出我想要的格式

pd.DataFrame.from_dict(json_normalize(my_json), orient='columns')

在此處輸入圖片說明

我預期的格式如下

在此處輸入圖片說明

不知道該怎么做?

可以直接使用DataFrame ,然后轉置然后reset_index

pd.DataFrame(my_json).T.reset_index().rename(columns={"index":"date"})

您也可以通過這種方式獲得確切的格式:

pd.DataFrame(my_json).T.rename_axis(columns='Date')                                                                                                                                  

Date          open    high     low   close     volume
2017-01-03  214.86  220.33  210.96  216.99  5923254.0
2017-12-29  316.18  316.41  310.00  311.35  3777155.0

您還可以直接從數據中讀取以獲取缺少日期的格式:

pd.DataFrame.from_dict(my_json, orient='index').rename_axis(columns='Date')                                                                                                          

Date          open    high     low   close   volume
2017-01-03  214.86  220.33  210.96  216.99  5923254
2017-12-29  316.18  316.41  310.00  311.35  3777155

我假設my_json是字典。 即,它不是字符串格式

pd.DataFrame.from_dict(my_json, orient='index').rename_axis('date').reset_index()

Out[632]:
         date    open    high     low   close   volume
0  2017-01-03  214.86  220.33  210.96  216.99  5923254
1  2017-12-29  316.18  316.41  310.00  311.35  3777155

如果my_json為字符串格式,則需要在處理前調用ast.iteral_eval轉換為字典

import ast

d = ast.literal_eval(my_json)
pd.DataFrame.from_dict(d, orient='index').rename_axis('date').reset_index()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM