2017-09-07 33 views
3

私はPythonの初心者です。私がしたいのは、ファンダスの歴史的な価格データのjsonファイルをPandasで読み込み、そのデータで統計を実行することです。私はPandasについて多くの話題を調べ、jsonファイルを解析しています。 追加値と入れ子リストを持つjsonファイルをpandasデータフレームに渡したいとします。私はここで問題を抱えている。Python Pandasでjsonを正しく正規化する方法

私はリストを持っ

with open('EUR_JPY_H8.json') as data_file:  
data = json.load(data_file) 

、私はJSONファイルをロードし、必要なlibがインポート

import pandas as pd 
import json 
from pandas.io.json import json_normalize 

JSONファイル 'EUR_JPY_H8.json'

ファーストを得ました以下:

[{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に渡します。

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

「中期」の下にネストされたリストに含まれている価格を取得してくださいしかし、私はこのような結果を得た、 json_normalize output

「時間」のデータは、行単位で各整数列に内訳を得ました。 関連文書を確認しました。 json_normalizeの2番目のパラメータに文字列またはリストオブジェクトを渡す必要があります。そこにタイムスタンプを渡すことができます。

私の予想される出力は次のようになります。

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

答えて

1

あなただけの余分のparamsなし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 
+0

笑、そんなにありがとう...簡単なのthats! –

関連する問題