code: def _print_unhashable(df, columns=None):
      
      for c in df.columns if columns is None else columns:
          if df.dtypes[c] == object:
              try:
                  df[c].apply(hash)
              except TypeError:
                  df[c] = df[c].dropna().apply(pformat).ix[df.index]
  
      return df
docs: Replace unhashable values in a DataFrame with their string repr
      Args:
          df: DataFrame
          columns: columns to replace, if necessary. Default None replaces all columns.