docstr: Attempt to find a unique asset whose symbol is the given string.
  
  If multiple assets have held the given symbol, return a 0.
  
  If no asset has held the given symbol, return a  NaN.
docstr_tok: ["Attempt","to","find","a","unique","asset","whose","symbol","is","the","given","string",".","If","multiple","assets","have","held","the","given","symbol",",","return","a","0",".","If","no","asset","has","held","the","given","symbol",",","return","a","NaN","."]
code: def _lookup_unconflicted_symbol(self, symbol):
      """
      Attempt to find a unique asset whose symbol is the given string.
  
      If multiple assets have held the given symbol, return a 0.
  
      If no asset has held the given symbol, return a  NaN.
      """
      try:
          uppered = symbol.upper()
      except AttributeError:
          # The mapping fails because symbol was a non-string
          return numpy.nan
  
      try:
          return self.finder.lookup_symbol(uppered, as_of_date=None)
      except MultipleSymbolsFound:
          # Fill conflicted entries with zeros to mark that they need to be
          # resolved by date.
          return 0
      except SymbolNotFound:
          # Fill not found entries with nans.
          return numpy.nan
  
imports: from abc import ABCMeta, abstractmethod
  from collections import namedtuple
  import hashlib
  from textwrap import dedent
  import warnings
  from logbook import Logger
  import numpy
  import pandas
  from pandas import read_csv
  import pytz
  import requests
  from six import StringIO, iteritems, with_metaclass
  from catalyst.errors import MultipleSymbolsFound, SymbolNotFound, ZiplineError
  from catalyst.protocol import DATASOURCE_TYPE, Event
  from catalyst.assets import Equity
  from catalyst.constants import LOG_LEVEL
label_desc: Use image node_id 7 for calling the PandasCSV obj's underlying member method code with example usage: obj._lookup_unconflicted_symbol(symbol) and returns: self, numpy, int, numpy