class_docstr: Uses a Pandas DataFrame as the feed source, using indices into column
  names (which can be "numeric")
  
  This means that all parameters related to lines must have numeric
  values as indices into the tuples
  
  Params:
  
    - ``nocase`` (default *True*) case insensitive match of column names
  
  Note:
  
    - The ``dataname`` parameter is a Pandas DataFrame
  
    - Values possible for datetime
  
      - None: the index contains the datetime
      - -1: no index, autodetect column
      - >= 0 or string: specific colum identifier
  
    - For other lines parameters
  
      - None: column not present
      - -1: autodetect
      - >= 0 or string: specific colum identifier
class_docstr_tok: ["Uses","a","Pandas","DataFrame","as","the","feed","source",",","using","indices","into","column","names","(","which","can","be","``","numeric","''",")","This","means","that","all","parameters","related","to","lines","must","have","numeric","values","as","indices","into","the","tuples","Params",":","-","``","nocase","``","(","default","*","True","*",")","case","insensitive","match","of","column","names","Note",":","-","The","``","dataname","``","parameter","is","a","Pandas","DataFrame","-","Values","possible","for","datetime","-","None",":","the","index","contains","the","datetime","-","-1",":","no","index",",","autodetect","column","-",">","=","0","or","string",":","specific","colum","identifier","-","For","other","lines","parameters","-","None",":","column","not","present","-","-1",":","autodetect","-",">","=","0","or","string",":","specific","colum","identifier"]
code: def __init__(self):
      super(PandasData, self).__init__()
  
      # these "colnames" can be strings or numeric types
      colnames = list(self.p.dataname.columns.values)
      if self.p.datetime is None:
          # datetime is expected as index col and hence not returned
          pass
  
      # try to autodetect if all columns are numeric
      cstrings = filter(lambda x: isinstance(x, string_types), colnames)
      colsnumeric = not len(list(cstrings))
  
      # Where each datafield find its value
      self._colmapping = dict()
  
      # Build the column mappings to internal fields in advance
      for datafield in self.getlinealiases():
          defmapping = getattr(self.params, datafield)
  
          if isinstance(defmapping, integer_types) and defmapping < 0:
              # autodetection requested
              for colname in colnames:
                  if isinstance(colname, string_types):
                      if self.p.nocase:
                          found = datafield.lower() == colname.lower()
                      else:
                          found = datafield == colname
  
                      if found:
                          self._colmapping[datafield] = colname
                          break
  
              if datafield not in self._colmapping:
                  # autodetection requested and not found
                  self._colmapping[datafield] = None
                  continue
          else:
              # all other cases -- used given index
              self._colmapping[datafield] = defmapping
  
file_path: backtrader/backtrader/feeds/pandafeed.py
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  from backtrader.utils.py3 import filter, string_types, integer_types
  from backtrader import date2num
  import backtrader.feed
label_desc: Use image node_id 1 to create a new PandasData object from inherited base classes: feed with example: obj = PandasData()