2016-08-31 79 views
5

ファイル名と生成時刻の2つの列を持つpandas DataFrameがあります。pandas DataFrameをJSON形式に変換する

File  Hour 

    F1   1 
    F1   2 
    F2   1 
    F3   1 

私は、次の形式のJSONファイルに変換しようとしています:私は、コマンドdataframe.to_json(オリエント=「記録」)を使用する場合

{“File”:”F1”,”Hour”:”1”} 
{“File”:”F1”,”Hour”:”2”} 
{“File”:”F2”,”Hour”:”1”} 
{“File”:”F3”,”Hour”:”1”} 

、私は内のレコードを取得します以下の形式:

希望する形式でjsonファイルを取得するオプションがあるかどうか疑問です。どんな助けもありがとう。

+1

あなたが望むものではありません適切な 'json'。 'dataframe.to_json(orient =" records ")'から得られるものは適切です 'json' – piRSquared

答えて

7

DF.to_jsonの後に出力される出力は、stringです。したがって、要件に応じてスライスし、コンマを削除することもできます。

out = df.to_json(orient='records')[1:-1].replace('},{', '} {') 

は、テキストファイルに出力を書き込むには、あなたができる:

with open('file_name.txt', 'w') as f: 
    f.write(out) 
+0

これは、{" ServerGroup ":" Map "" Hour ":0}の2つのキー値の組の間のカンマを削除します。 {"ServerGroup": "Map"、 "Hour":0}にする必要があります。 – user3447653

+0

ええ、それは私の間違いでした。変更したものをお試しください。 –

+0

ありがとう、それは正常に動作します。最初はデータフレームをjsonファイルに変換し、 "df1.to_json(orient = 'records'、path_or_buf = '/ content/tmp/GoogleCount.json')[1:-1]を使用してローカルファイルに格納しました。 replace( '}、{'、 '} {') "。しかしreplace文の後で、 "'NoneType'オブジェクトに属性 '__getitem__'がないというエラーが出ます。 – user3447653

3

私はOPが探しているものだと思うです:

with open('temp.json', 'w') as f: 
    f.write(df.to_json(orient='records', lines=True)) 

これはトリックを行う必要があります。パンダの新しいバージョンで

0

(0.20.0+、私は信じている)、これが直接行うことができます。

df.to_json('temp.json', orient='records', lines=True) 

直接圧縮することも可能である:

df.to_json('temp.json.gz', orient='records', lines=True, compression='gzip') 
関連する問題