从注释中删除Nan

时间:2018-11-22 07:17:09

标签: python

如何在y=nan的{​​{1}}中用list删除记录,如下所示?

dictionary

3 个答案:

答案 0 :(得分:0)

您的问题的格式不是很好,但是我会做一些假设并尝试提供帮助。
试试这个:

import numpy as np
nan = np.nan
dict_list = [{'yanchor': 'bottom', 'xanchor': 'auto', 'x': u'2018-Q3', 'y': 169.80000000000001, 'text': '169.8', 'showarrow': False}, {'yanchor': 'bottom', 'xanchor': 'auto', 'x': u'2018-Q4', 'y': 53.829999999999998, 'text': '53.83', 'showarrow': False}, {'yanchor': 'bottom', 'xanchor': 'auto', 'x': u'2019-Q1', 'y': 63.420000000000002, 'text': '63.42', 'showarrow': False}, {'yanchor': 'bottom', 'xanchor': 'auto', 'x': u'2019-Q2', 'y': 42.369999999999997, 'text': '42.37', 'showarrow': False}, {'yanchor': 'bottom', 'xanchor': 'auto', 'x': u'2019-Q3', 'y': nan, 'text': 'nan', 'showarrow': False}, {'yanchor': 'bottom', 'xanchor': 'auto', 'x': u'2019-Q4', 'y': nan, 'text': 'nan', 'showarrow': False}]
filtered_dict_list = [x for x in dict_list if not np.isnan(x['y'])]

这是一个简单的列表理解过滤,用谷歌搜索即可...
祝你好运!


所做的假设:

  • nan应该是numpy.nan
  • “删除”的意思是“获取不包含不希望的字典的新字典

答案 1 :(得分:0)

@ user1672063:以下方法可以解决您的问题:

# let name your initial record "record"
# record = [{'yanchor': 'bottom', 'xanchor': 'auto', 'x': u'2018-Q3', 'y': 169.80000000000001, 'text': '169.8', 'showarrow': False},..]
#
# Let initialise a new record
newrecord = []
for d in record:
    if d['y'] is nan:   # provided that you "import numpy.nan as nan" at the beginning
       del d['y']
    newrecord.append(d)

#“ newrecord”对应于没有d [y] = nan的新记录。

答案 2 :(得分:0)

以下内容有效。

newrecord2 = [] 对于注解2中的d:     如果d ['text']!='nan':#前提是您在开始时“将numpy.nan导入为nan”        newrecord2.append(d)        #print newrecord