【问题标题】:How to keep rows order from a pandas DataFrame to a dict如何保持从 pandas DataFrame 到 dict 的行顺序
【发布时间】:2020-01-10 15:51:25
【问题描述】:

我有一个已经按日期排序的 pandas DataFrame,但我需要将此 DataFrame 序列化为保持行顺序的 dict python 结构,以便稍后返回 JSON。

我使用 dict 我有一些键和值,我需要 DataFrame 作为值。我使用了 pd.to_dict() 但这并不能保持行顺序。

我尝试使用 OrderedDict,但无法使用 json.dumps() 对其进行序列化。我正在使用 python 2.7。

dic_data = {
            'data':data.to_dict(),
            'variable':variables[variable],
            'unit':units[variable],
            'limits':{
                'limite_superior':lim_sup,
                'limite_inferior':lim_inf
            }
        }

return HttpResponse(json.dumps(dic_data),content_type="application/json")

这是 datraframe 数据,我试图将其转换为行排序的字典,以便稍后在 json 中对其进行序列化

            date_time values
202   2018-09-01 10:00    0,9
203   2018-09-01 11:00    0,1
204   2018-09-01 12:00    0,0
205   2018-09-01 13:00    0,0
206   2018-09-01 14:00    0,0
207   2018-09-01 15:00    0,0
208   2018-09-01 16:00    0,0
209   2018-09-01 17:00    0,0

我从数据数据帧接收的 json 对象具有以下结构:

{
    date_time:{
                0:"2018-09-01 20:00",
                1:"2018-09-01 21:00",
                ....
              },
    values:{
            0:20.54,
            1:30.45,
            .....
           }

}

实际上我需要相同的结构,但行排序。

【问题讨论】:

  • 我删除了一个不太相关的标签并添加了 python 2.7 标签。认为这更重要,因为“字典在 Python 3.6 中排序”所以这确实是一个特定于版本的问题。

标签: python django pandas python-2.7 dataframe


【解决方案1】:

您可以尝试使用to_dict方法的into参数:

from collections import OrderedDict

dic_data = {
            'data':data.to_dict(into=OrderedDict),
            'variable':variables[variable],
            'unit':units[variable],
            'limits':{
                'limite_superior':lim_sup,
                'limite_inferior':lim_inf
            }
        }

【讨论】:

    猜你喜欢
    • 2021-10-06
    • 2018-08-11
    • 2019-08-25
    • 2019-10-10
    • 1970-01-01
    • 2021-11-26
    • 2022-01-05
    • 1970-01-01
    • 2018-06-09
    相关资源
    最近更新 更多