【问题标题】:pandas Dataframe to JSON list of dictpandas Dataframe 到 dict 的 JSON 列表
【发布时间】:2018-06-09 06:43:33
【问题描述】:

这是样本数据集

datetime  2017-12-24  2017-12-31                             
a                1.5         0.5
b                0.0         1.5
c                1.5         0.0

我正在使用 to_json 将其转换为 json 并得到此输出

{"2017-12-24":{"a":1.5,"b":0.0,"c":1.5},"2017-12-31":{"a":0.5,"b":1.5,"c":0.0}}

我想要做的是让 json 像这样的 dict 列表

[{"datetime":"2017-12-24","a":1.5,"b":0.0,"c":1.5},{"datetime":"2017-12-31", "a":0.5,"b":1.5,"c":0.0}]

我的代码在这里

df = pd.DataFrame({'2017-12-24': [1.5, 0.0, 1.5], '2017-12-31': [0.5, 1.5, 0.0]}, index=['a', 'b', 'c'])
df.columns.name='datetime'
print(df.to_json())

【问题讨论】:

    标签: python json python-3.x pandas dataframe


    【解决方案1】:

    transposereset_indexto_json

    i = df.T.reset_index()
    i
    
         datetime    a    b    c
    0  2017-12-24  1.5  0.0  1.5
    1  2017-12-31  0.5  1.5  0.0
    
    i.to_json()
    '[{"datetime":"2017-12-24","a":1.5,"b":0.0,"c":1.5},{"datetime":"2017-12-31","a":0.5,"b":1.5,"c":0.0}]'
    

    stack + unstack

    (df.stack()
       .unstack(0)
       .reset_index()
       .to_json(orient='records'))
    
    '[{"datetime":"2017-12-24","a":1.5,"b":0.0,"c":1.5},{"datetime":"2017-12-31","a":0.5,"b":1.5,"c":0.0}]'
    

    【讨论】:

    • df.stack().unstack(0) 表示 df.T 所以我可以简单地做吗? df.T.reset_index().to_json(orient='records')
    • @NasirHussain 是的,所以我也添加了该选项:p
    • 现在您添加了转置 +1 :)
    【解决方案2】:

    你可以重置索引并输出它吗? 注意:我在这里使用 to_dict 而不是 to_json 来使用简单的打印

    import pandas as pd
    
    df = pd.DataFrame({'2017-12-24': [1.5, 0.0, 1.5], 
                       '2017-12-31': [0.5, 1.5, 0.0]}, 
                      index=['a', 'b', 'c'])
    
    print(df.T.reset_index().rename(columns={'index':'datetime'}).to_dict('r'))
    
    
    [{'datetime': '2017-12-24', 'a': 1.5, 'b': 0.0, 'c': 1.5}, 
    {'datetime': '2017-12-31', 'a': 0.5, 'b': 1.5, 'c': 0.0}]
    

    【讨论】:

    • 抱歉,刚刚在 :p 中获得了转置选项
    • @cᴏʟᴅsᴘᴇᴇᴅ haha​​h nps... 以为您过于复杂了,但我看到您也考虑过。
    • 是的,这不应该影响您的回答。你得到了我的支持。
    猜你喜欢
    • 2021-10-06
    • 2019-08-25
    • 1970-01-01
    • 2018-08-11
    • 2019-04-18
    • 2018-06-20
    • 1970-01-01
    • 2018-12-11
    • 2015-03-16
    相关资源
    最近更新 更多