Python: конвертировать json загрузки в панду - PullRequest
0 голосов
/ 08 марта 2020

Я конвертирую формат json в Pandas фрейм данных, но не могу вернуться в табличном формате. enter image description here

HEADERS = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.71 Safari/537.36",
           "Origin": "https://www2.sgx.com",
           "Referer": "https://www2.sgx.com/securities/securities-prices"}

# Start downloading stocks info from sgx
req = requests.get("https://api.sgx.com/securities/v1.1?excludetypes=bonds&params=nc,adjusted-vwap,b,bv,p,c,change_vs_pc,change_vs_pc_percentage,cx,cn,dp,dpc,du,ed,fn,h,iiv,iopv,lt,l,o,p_,pv,ptd,s,sv,trading_time,v_,v,vl,vwap,vwap-currency",
                   headers=HEADERS)
stocks = json.loads(req.text)
table = pd.DataFrame(stocks)

n - компания

n c - код

цена -

Ответы [ 3 ]

1 голос
/ 08 марта 2020

Хорошо, stocks['data']['prices'] - это список словарей, и вы хотите сохранить только поля nc, n и lt в именах столбцов Code, Company и Price.

Чтобы построить DataFrame с этим, вы можете сделать:

columns = ['nc', 'n', 'lt']

df = pd.DataFrame([{k: v for k,v in d.items() if k in columns}
               for d in stocks['data']['prices']], columns = columns)
df.rename(columns = {'n': 'Company', 'nc': 'Code', 'lt': 'Price'}, inplace = True)

Вы получите кадр данных из 1042 строк и 3 ожидаемых столбцов ... за исключением того, что столбец Company будет содержать только NaN значение, поскольку исходный json не имеет данных в поле n.

0 голосов
/ 08 марта 2020

Использование

import pandas as pd
df = pd.DataFrame.from_records(stocks)
0 голосов
/ 08 марта 2020

Я думаю, вы должны попробовать это, данные внутри stocks['data']['prices']

table = pd.DataFrame(stocks['data']['prices'])

...