2014-06-05 4 views
4

내가 가져온 두 파일의 데이터로 채워진 사전이 있지만 일부 데이터는 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() 

어떻게 추가하거나, 유모의 값을 사전에 값 쌍 더 키가 없는지 확인하기 위해 멀리이 코드에서 취해야합니까?

+0

'filter()'를 사전 이해와 함께 사용할 수 있습니다. 참조 : http://stackoverflow.com/a/16589453/758446. – BlackVegetable

+0

은 키 또는 값으로 사전에 저장됩니다. – twinlakes

답변

0

사전에서 NaN을 제거하는 대신 NaN이 처음으로 도착하는 이유를 자세히 조사해야합니다.

NaN이 자체와 동일하지 않기 때문에 사전에서 NaN을 사용하기가 어려워집니다. 자세한 내용

에 체크 아웃은 : NaNs as key in dictionaries

10
from math import isnan 

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])} 
1

함께 단순한 전화

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)) 
관련 문제