2016-08-31 109 views
5

我有一個帶有兩列的熊貓數據框 - 一個帶有文件名和生成時間。將熊貓數據框轉換爲JSON格式

File  Hour 

    F1   1 
    F1   2 
    F2   1 
    F3   1 

我試圖把它與下面的格式轉換成JSON文件:

{「File」:」F1」,」Hour」:」1」} 
{「File」:」F1」,」Hour」:」2」} 
{「File」:」F2」,」Hour」:」1」} 
{「File」:」F3」,」Hour」:」1」} 

當我使用命令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}。我需要它是{「ServerGroup」:「地圖」,「小時」:0}。 – user3447653

+0

是的,那是我的錯誤。請嘗試修改後的一個。 –

+0

謝謝,這工作正常。最初,我曾經使用「df1.to_json(orient ='records',path_or_buf ='/ content/tmp/GoogleCount.json')[1:-1]將數據框轉換爲json文件並將其存儲在本地文件中。替換('},{','} {')「。但是現在在替換語句之後,我得到錯誤「'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')