【问题标题】:Pandas Dataframe to JSON File with Separate RecordsPandas Dataframe 到带有单独记录的 JSON 文件
【发布时间】:2013-11-07 09:57:59
【问题描述】:

我正在尝试将数据从 Pandas Dataframe 转储到 JSON 文件中以导入 MongoDB。我在文件中需要的格式在表格的每一行都有 JSON 记录:

{<column 1>:<value>,<column 2>:<value>,...,<column N>:<value>}

df.to_json(,orient='records') 接近结果,但所有记录都转储在单个 JSON 数组中。

对于从数据框中获取此结果的有效方法有什么想法吗?

更新:我想出的最佳解决方案如下:

dlist = df.to_dict('records')
dlist = [json.dumps(record)+"\n" for record in dlist]
open('data.json','w').writelines(dlist)

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    根据自己的喜好在 python 字典中格式化数据并使用 simplejson:

    json.dumps(your_dictionary)
    

    【讨论】:

    • 我认为这行不通,因为我希望每一行都有单独的 JSON 记录。记录不应在结果文件的列表或字典中绑定在一起。
    • 我想你的结果是一个python记录列表?
    • 文件中的每一行都应该是代表一个特定记录的字典。这些字典不应在文件中的列表中绑定在一起。
    • for i in list: json.dumps(i)
    【解决方案2】:

    docs here,有几个orient 选项可以通过,你至少需要pandas 0.12

    In [2]: df = DataFrame(np.random.randn(10,2),columns=list('AB'))
    
    In [3]: df
    Out[3]: 
              A         B
    0 -0.350949 -0.428705
    1 -1.732226  1.895324
    2  0.314642 -1.494372
    3 -0.492676  0.180832
    4 -0.985848  0.070543
    5 -0.689386 -0.213252
    6  0.673370  0.045452
    7 -1.403494 -1.591106
    8 -1.836650 -0.494737
    9 -0.105253  0.243730
    
    In [4]: df.to_json()
    Out[4]: '{"A":{"0":-0.3509492646,"1":-1.7322255701,"2":0.3146421374,"3":-0.4926764426,"4":-0.9858476787,"5":-0.6893856618,"6":0.673369954,"7":-1.4034942394,"8":-1.8366498622,"9":-0.1052531862},"B":{"0":-0.4287054732,"1":1.8953235554,"2":-1.4943721459,"3":0.1808322313,"4":0.0705432211,"5":-0.213252257,"6":0.045451995,"7":-1.5911060576,"8":-0.4947369551,"9":0.2437304866}}'
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-25
      • 2017-01-31
      • 1970-01-01
      • 2019-01-31
      • 2020-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多