Pandas: конвертировать JSON в Pandas Dataframe - PullRequest
0 голосов
/ 13 декабря 2018

Эксперты,

У меня возникли проблемы с анализом Json для Pandas, а затем я сохранил его в формате CSV.

data2 = {"date":"2018-01-02","data":{"AAPL":{"open":"170.16","close":"172.26","high":"172.30","low":"169.26","volume":"25555934"},"MSFT":{"open":"86.13","close":"85.95","high":"86.31","low":"85.50","volume":"22483797"}}}

Если я попытаюсь:

df = pd.DataFrame.from_dict(json_normalize(data2), orient='columns')
print(df)

Всепечатается в одну строку:

enter image description here

Если я делаю:

jdata = json.loads(data2)
df = pd.DataFrame(jdata)
print(df.T)

Я получаю ошибку: TypeError: JSONобъект должен быть str, bytes или bytearray, а не 'dict'

Я хочу напечатать его в следующем формате таблицы, чтобы затем я мог сохранить его как csv:

Date        Data    Open    Close   High    Low     Volume
2018-01-02  AAPL    170.16  172.26  172.30  169.26  25555934
2018-01-02  MSFT    86.13   85.95   86.31   85.50   22483797

Что такоеправильный способ достижения моей цели?

Спасибо !!

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Вы можете использовать apply, чтобы превратить диктовку в панд Series

df = pd.DataFrame.from_dict(data2)
df = pd.concat([df['date'],df['data'].apply(pd.Series)], axis=1)
print(df)

            date    open   close    high     low    volume
AAPL  2018-01-02  170.16  172.26  172.30  169.26  25555934
MSFT  2018-01-02   86.13   85.95   86.31   85.50  22483797
0 голосов
/ 13 декабря 2018

Я буду использовать ваш оригинальный вывод и изменить его

s=pd.DataFrame(data2)
pd.concat([s.drop('data',1),pd.DataFrame(s.data.tolist(),index=s.index)],1)
            date   close    high     low    open    volume
AAPL  2018-01-02  172.26  172.30  169.26  170.16  25555934
MSFT  2018-01-02   85.95   86.31   85.50   86.13  22483797
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...