如何通过Python Pandas正确规范化json

我是Python的初学者。我想做的是通过Pandas加载外汇历史价格数据的json文件,并对数据进行统计。我已经遍历了有关Pandas和解析json文件的许多主题。我想将具有额外值和嵌套列表的json文件传递给pandas数据框。我在这里遇到了问题。

我有一个json文件’EUR_JPY_H8.json’

首先,我导入所需的库,

import pandas as pd

import json

from pandas.io.json import json_normalize

然后加载json文件,

with open('EUR_JPY_H8.json') as data_file:    

data = json.load(data_file)

我得到以下列表:

[{u'complete': True,

u'mid': {u'c': u'119.743',

u'h': u'119.891',

u'l': u'119.249',

u'o': u'119.341'},

u'time': u'1488319200.000000000',

u'volume': 14651},

{u'complete': True,

u'mid': {u'c': u'119.893',

u'h': u'119.954',

u'l': u'119.552',

u'o': u'119.738'},

u'time': u'1488348000.000000000',

u'volume': 10738},

{u'complete': True,

u'mid': {u'c': u'119.946',

u'h': u'120.221',

u'l': u'119.840',

u'o': u'119.888'},

u'time': u'1488376800.000000000',

u'volume': 10041}]

然后我将列表传递给json_normalize。尝试获取嵌套在“ mid”下方的列表中的价格

result = json_normalize(data,'time',['time','volume','complete',['mid','h'],['mid','l'],['mid','c'],['mid','o']])

但是我得到了这样的结果, json_normalize输出

“时间”数据逐行细分为每个整数。我已经检查了相关文件。我必须将字符串或列表对象传递给json_normalize的第二个参数。如何在不中断的情况下传递时间戳。

我的预期输出是:

column = 

index | time | volumn | completed | mid.h | mid.l | mid.c | mid.o

回答:

您可以通过data而无需任何其他参数。

df = pd.io.json.json_normalize(data)

df

complete mid.c mid.h mid.l mid.o time volume

0 True 119.743 119.891 119.249 119.341 1488319200.000000000 14651

1 True 119.893 119.954 119.552 119.738 1488348000.000000000 10738

2 True 119.946 120.221 119.840 119.888 1488376800.000000000 10041


如果要更改列顺序,请使用df.reindex

df = df.reindex(columns=['time', 'volume', 'complete', 'mid.h', 'mid.l', 'mid.c', 'mid.o'])

df

time volume complete mid.h mid.l mid.c mid.o

0 1488319200.000000000 14651 True 119.891 119.249 119.743 119.341

1 1488348000.000000000 10738 True 119.954 119.552 119.893 119.738

2 1488376800.000000000 10041 True 120.221 119.840 119.946 119.888

以上是 如何通过Python Pandas正确规范化json 的全部内容, 来源链接: utcz.com/qa/404303.html

回到顶部