【发布时间】:2015-09-03 21:09:53
【问题描述】:
我有一个字典列表如下:
[
{
"status": "BV",
"max_total_duration": null,
"min_total_duration": null,
"75th_percentile": 420,
"median": 240.0,
"25th_percentile": 180,
"avg_total_duration": null
},
{
"status": "CORR",
"max_total_duration": null,
"min_total_duration": null,
"75th_percentile": 1380,
"median": 720.0,
"25th_percentile": 420,
"avg_total_duration": null
},
{
"status": "FILL",
"max_total_duration": null,
"min_total_duration": null,
"75th_percentile": 1500,
"median": 840.0,
"25th_percentile": 480,
"avg_total_duration": null
},
{
"status": "INIT",
"max_total_duration": 11280,
"min_total_duration": 120,
"75th_percentile": 720,
"median": 360.0,
"25th_percentile": 180,
"avg_total_duration": 2061
},
]
显然,所有状态的 max_total_duration、min_total_duration 和 avg_total_duration 均为空,除非状态为“INIT”。我想要的是删除所有空值和 INIT 的所有条目,其中 max_total_duration、min_total_duration 和 avg_total_duration 具有正确的值,将它们作为新字典添加到列表中,如下所示:
[
{
"status": "BV",
"75th_percentile": 420,
"median": 240.0,
"25th_percentile": 180,
},
{
"status": "CORR",
"75th_percentile": 1380,
"median": 720.0,
"25th_percentile": 420,
},
{
"status": "FILL",
"75th_percentile": 1500,
"median": 840.0,
"25th_percentile": 480,
},
{
"status": "INIT",
"75th_percentile": 720,
"median": 360.0,
"25th_percentile": 180,
},
{
"max_total_duration": 11280,
"min_total_duration": 120,
"avg_total_duration": 2061,
}
]
我已经尝试通过迭代列表来完成此操作,但计算成本非常高。有没有更简单的方法可以使用 pandas 来执行此操作?
【问题讨论】:
-
为什么投反对票?我能有理由吗
-
您还没有为自己解决问题做出任何努力。您只是粘贴了数据并要求其他人使用不同的库为您解决问题。为什么不尝试将一些数据放入 pandas 中,看看是否卡住,然后然后问一个具体问题?
-
嗯..我确实尝试过使用传统的方法遍历列表,找到空值,消除它们并获得所需的结果..我对熊猫没有经验..如果那是什么它需要..让我尝试通过 pandas 看看我是否可以自己解决它..
-
没有使用工具的经验并不是提出一个仅包含“我如何解决这个我尝试了不同的方法,但使用该工具的问题?”的问题的正当理由。这是一个很好的问题——只要你通过尝试一些东西来支持它。
-
您可以做的一件事是'from numpy import nan as null',然后当数据加载到DataFrame中时,某些列具有nan值,可以使用frame.dropna(axis = 1)删除。
标签: python list dictionary pandas