code: def _table_info(self, buf=None):
      
      metrics = [self.count().name('nrows')]
      for col in self.columns:
          metrics.append(self[col].count().name(col))
  
      metrics = self.aggregate(metrics).execute().loc[0]
  
      names = ['Column', '------'] + self.columns
      types = ['Type', '----'] + [repr(x) for x in self.schema().types]
      counts = ['Non-null #', '----------'] + [str(x) for x in metrics[1:]]
      col_metrics = util.adjoin(2, names, types, counts)
      result = 'Table rows: {}\n\n{}'.format(metrics[0], col_metrics)
  
      print(result, file=buf)
docs: Similar to pandas DataFrame.info. Show column names, types, and null
      counts. Output to stdout by default