当前位置: 首页 > 知识库问答 >
问题:

如何保持从数据帧到dict的行顺序

郑伟彦
2023-03-14

我有一个熊猫DataFrame,它已经按日期排序,但我需要序列化这个DataFrame到一个保持行顺序的命令python结构,以便我以后可以返回一个JSON。

我使用一个dict,其中我有一些键和值,我需要数据帧作为一个值。我用pd。但这并不能保持行的顺序。

我尝试使用OrderedDict,但无法用json序列化。转储()。我正在使用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数据,我试图将其转换为按dict排序的行,以便稍后在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

IM从de data dataframe中回收的json对象具有以下结构:

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

}

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

共有1个答案

华知
2023-03-14

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

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
            }
        }
 类似资料:
  • 我尝试从Socket TCP获取数据以附加到数据帧我收到数据并将它们执行到Seq(),但当我使用foreach将它们附加到数据帧时出现问题这是我的代码: 这是我跑步时的问题 Java语言组织中的lang.NullPointerException。阿帕奇。火花sql。SQLImplicits。localSeqToDatasetHolder(SQLImplicits.scala:231),位于Cl.C

  • 问题内容: 以下SQL查询: 返回: 要添加一次,只需添加一次即可: 但是,结果值改变了顺序: 可能是什么原因呢? 我如何保留订单? 问题答案: 该关键字是做什么它应该做的事情,回报每一个行与给定的列值。不同不允许您指定 哪些 这样的行会被退回,这是从原来的查询,这样的排序是允许清楚(存在一个跟随ID为429的行ID为443行)。 要控制将返回哪些行,您需要重新构造查询。我将采用的典型解决方案是使

  • 问题内容: 我想将一个键,值对添加到哈希表(或任何其他集合)中,但必须保持插入顺序。我怎样才能做到这一点? 就像我将1作为键“ 1”添加为值,将2作为键并将“ 2”添加为值。 输出应为: 问题答案: 以下是一些重要实现的特征差异: :“具有可预测的迭代顺序,通常是将键插入映射 的顺序 ( 插入顺序 )。” :“不保证地图的顺序” :“根据其键的自然顺序或按” 即是一个 因此,在这种情况下,您需要的

  • 问题内容: 我是ELK堆栈的新手,所以请原谅我的无知。我已经能够让Logstash将数据从我的数据库发送到Elasticsearch,但是一旦完成传输,它就会退出。我如何保持其运行,从而使其保持同步?谢谢 问题答案: 您需要在输入中指定时间表: 在下面的()将运行从数据库的每一分钟,并选择记录,并只选择那些上一次查询运行后,被更新的记录。您的时间戳字段名称可能有所不同,可以根据情况进行调整。

  • 问题内容: 我正在处理熊猫和Spark数据帧。数据帧始终很大(> 20 GB),而标准的火花功能不足以容纳这些大小。目前,我将我的pandas数据框转换为spark数据框,如下所示: 我进行这种转换是因为通过火花将数据帧写入hdfs非常容易: 但是,对于大于2 GB的数据帧,转换失败。如果将spark数据框转换为熊猫,则可以使用pyarrow: 这是从Spark到Panda的快速对话,它也适用于大

  • 我有两个形状相同的python数据帧,例如: 我想使用df2中的值作为行索引来选择df1中的值,并创建一个形状相等的新数据帧。预期结果: 我已尝试使用.loc,它在单个列中运行良好: 但是我不能同时在所有列上使用. loc或. iloc。我想避免循环来优化性能,因为我正在处理一个大数据帧。有什么想法吗?