Python 有没有办法从充满数据的字典中删除nan?

Python 有没有办法从充满数据的字典中删除nan?,python,dictionary,nan,Python,Dictionary,Nan,我有一个字典,里面装满了我导入的两个文件的数据,但有些数据显示为nan。如何使用nan删除数据片段 我的代码是: import matplotlib.pyplot as plt from pandas.lib import Timestamp import numpy as np from datetime import datetime import pandas as pd import collections orangebook = pd.read_csv('C:\Users\

我有一个字典,里面装满了我导入的两个文件的数据,但有些数据显示为nan。如何使用nan删除数据片段

我的代码是:

import matplotlib.pyplot as plt 
from pandas.lib import Timestamp
import numpy as np   
from datetime import datetime
import pandas as pd
import collections

orangebook = pd.read_csv('C:\Users\WEGWEIS_JAKE\Desktop\Work Programs\Code Files\products2.txt',sep='~', parse_dates=['Approval_Date'])
specificdrugs=pd.read_csv('C:\Users\WEGWEIS_JAKE\Desktop\Work Programs\Code Files\Drugs.txt',sep=',')

"""This is a dictionary that collects data from the .txt file
This dictionary has a key,value pair for every generic name with its corresponding approval date """
drugdict={}
for d in specificdrugs['Generic Name']:
    drugdict.dropna()
    drugdict[d]=orangebook[orangebook.Ingredient==d.upper()]['Approval_Date'].min()

我应该从这段代码中添加或删除什么来确保字典中没有值为nan的键、值对?

与其尝试从字典中删除nan,还不如进一步研究nan首先出现的原因

在字典中使用NaN变得很困难,因为NaN本身并不等于NaN

有关更多信息,请查看此链接:

如果NAN存储为密钥:

# functional
clean_dict = filter(lambda k: not isnan(k), my_dict)

# dict comprehension
clean_dict = {k: my_dict[k] for k in my_dict if not isnan(k)}
如果NAN存储为值:

# functional
clean_dict = filter(lambda k: not isnan(my_dict[k]), my_dict)

# dict comprehension
clean_dict = {k: my_dict[k] for k in my_dict if not isnan(my_dict[k])}
和simplejson

import simplejson

clean_dict  = simplejson.loads(simplejson.dumps(my_dict, ignore_nan=True))
## or depending on your needs
clean_dict  = simplejson.loads(simplejson.dumps(my_dict, allow_nan=False))

知道旧的,但以下是对我有用的和简单的-在提前阅读CSV时删除NAN:

orangebook = pd.read_csv('C:\Users\WEGWEIS_JAKE\Desktop\Work Programs\Code Files\products2.txt',sep='~', parse_dates=['Approval_Date']).dropna()
我也喜欢同时转换成字典:

orangebook = pd.read_csv('C:\Users\WEGWEIS_JAKE\Desktop\Work Programs\Code Files\products2.txt',sep='~', parse_dates=['Approval_Date']).dropna().to_dict()

您可以将
filter()
与词典一起使用。请参阅此以供参考:。您的NAN是否作为键或值存储在dict中?在键不是数字的情况下,这对我不起作用。。。如果它对任何人都有帮助,对于字符串,我将其更改为:c={k:c[k]如果类型(k)是str},那么对于c中的k,你也可以迭代
.items()
{k:v代表k,v在我的字典中。items()如果不是isnan(v)}
我仍然没有得到任何值
orangebook = pd.read_csv('C:\Users\WEGWEIS_JAKE\Desktop\Work Programs\Code Files\products2.txt',sep='~', parse_dates=['Approval_Date']).dropna().to_dict()