-
-
Notifications
You must be signed in to change notification settings - Fork 18.7k
Closed
Labels
Error ReportingIncorrect or improved errors from pandasIncorrect or improved errors from pandasIndexRelated to the Index class or subclassesRelated to the Index class or subclasses
Milestone
Description
Code Sample, a copy-pastable example if possible
In [3]: s = pd.Series(0, range(4))
In [4]: s.index = np.array([[2,3]]*4)
In [5]: s
Out[5]: ---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
/home/nobackup/repo/ipython/IPython/core/formatters.py in __call__(self, obj)
683 type_pprinters=self.type_printers,
684 deferred_pprinters=self.deferred_printers)
--> 685 printer.pretty(obj)
686 printer.flush()
687 return stream.getvalue()
/home/nobackup/repo/ipython/IPython/lib/pretty.py in pretty(self, obj)
381 if callable(meth):
382 return meth(obj, self, cycle)
--> 383 return _default_pprint(obj, self, cycle)
384 finally:
385 self.end_group()
/home/nobackup/repo/ipython/IPython/lib/pretty.py in _default_pprint(obj, p, cycle)
501 if _safe_getattr(klass, '__repr__', None) not in _baseclass_reprs:
502 # A user-provided repr. Find newlines and replace them with p.break_()
--> 503 _repr_pprint(obj, p, cycle)
504 return
505 p.begin_group(1, '<')
/home/nobackup/repo/ipython/IPython/lib/pretty.py in _repr_pprint(obj, p, cycle)
692 """A pprint that just redirects to the normal repr function."""
693 # Find newlines and replace them with p.break_()
--> 694 output = repr(obj)
695 for idx,output_line in enumerate(output.splitlines()):
696 if idx:
/home/nobackup/repo/pandas/pandas/core/base.py in __repr__(self)
65 Yields Bytestring in Py2, Unicode String in py3.
66 """
---> 67 return str(self)
68
69
/home/nobackup/repo/pandas/pandas/core/base.py in __str__(self)
44
45 if compat.PY3:
---> 46 return self.__unicode__()
47 return self.__bytes__()
48
/home/nobackup/repo/pandas/pandas/core/series.py in __unicode__(self)
979
980 self.to_string(buf=buf, name=self.name, dtype=self.dtype,
--> 981 max_rows=max_rows)
982 result = buf.getvalue()
983
/home/nobackup/repo/pandas/pandas/core/series.py in to_string(self, buf, na_rep, float_format, header, index, length, dtype, name, max_rows)
1020 the_repr = self._get_repr(float_format=float_format, na_rep=na_rep,
1021 header=header, index=index, length=length,
-> 1022 dtype=dtype, name=name, max_rows=max_rows)
1023
1024 # catch contract violations
/home/nobackup/repo/pandas/pandas/core/series.py in _get_repr(self, name, header, index, length, dtype, na_rep, float_format, max_rows)
1048 float_format=float_format,
1049 max_rows=max_rows)
-> 1050 result = formatter.to_string()
1051
1052 # TODO: following check prob. not neces.
/home/nobackup/repo/pandas/pandas/formats/format.py in to_string(self)
227 return 'Series([], ' + footer + ')'
228
--> 229 fmt_index, have_header = self._get_formatted_index()
230 fmt_values = self._get_formatted_values()
231
/home/nobackup/repo/pandas/pandas/formats/format.py in _get_formatted_index(self)
213 else:
214 have_header = index.name is not None
--> 215 fmt_index = index.format(name=True)
216 return fmt_index, have_header
217
/home/nobackup/repo/pandas/pandas/indexes/base.py in format(self, name, formatter, **kwargs)
1525 return header + list(self.map(formatter))
1526
-> 1527 return self._format_with_header(header, **kwargs)
1528
1529 def _format_with_header(self, header, na_rep='NaN', **kwargs):
/home/nobackup/repo/pandas/pandas/indexes/base.py in _format_with_header(self, header, na_rep, **kwargs)
1549
1550 else:
-> 1551 result = _trim_front(format_array(values, None, justify='left'))
1552 return header + result
1553
/home/nobackup/repo/pandas/pandas/formats/format.py in format_array(values, formatter, float_format, na_rep, digits, space, justify, decimal)
2021 space=space, justify=justify, decimal=decimal)
2022
-> 2023 return fmt_obj.get_result()
2024
2025
/home/nobackup/repo/pandas/pandas/formats/format.py in get_result(self)
2040
2041 def get_result(self):
-> 2042 fmt_values = self._format_strings()
2043 return _make_fixed_width(fmt_values, self.justify)
2044
/home/nobackup/repo/pandas/pandas/formats/format.py in _format_strings(self)
2226 def _format_strings(self):
2227 formatter = self.formatter or (lambda x: '% d' % x)
-> 2228 fmt_values = [formatter(x) for x in self.values]
2229 return fmt_values
2230
/home/nobackup/repo/pandas/pandas/formats/format.py in <listcomp>(.0)
2226 def _format_strings(self):
2227 formatter = self.formatter or (lambda x: '% d' % x)
-> 2228 fmt_values = [formatter(x) for x in self.values]
2229 return fmt_values
2230
/home/nobackup/repo/pandas/pandas/formats/format.py in <lambda>(x)
2225 class IntArrayFormatter(GenericArrayFormatter):
2226 def _format_strings(self):
-> 2227 formatter = self.formatter or (lambda x: '% d' % x)
2228 fmt_values = [formatter(x) for x in self.values]
2229 return fmt_values
TypeError: %d format: a number is required, not numpy.ndarray
Expected Output
It would be cool if this became a MultiIndex
automatically, but otherwise it should just raise an error (or maybe it's just the string representation which is broken?)
output of pd.show_versions()
In [6]: pd.show_versions()
INSTALLED VERSIONS
------------------
commit: a63bd12529ff309d957d714825b1753d0e02b7fa
python: 3.5.1.final.0
python-bits: 64
OS: Linux
OS-release: 4.5.0-2-amd64
machine: x86_64
processor:
byteorder: little
LC_ALL: None
LANG: it_IT.utf8
LOCALE: it_IT.UTF-8
pandas: 0.18.1+174.ga63bd12
nose: 1.3.7
pip: 1.5.6
setuptools: 18.4
Cython: 0.23.4
numpy: 1.10.4
scipy: 0.16.0
statsmodels: 0.8.0.dev0+111ddc0
xarray: None
IPython: 5.0.0.dev
sphinx: 1.3.1
patsy: 0.3.0-dev
dateutil: 2.2
pytz: 2012c
blosc: None
bottleneck: 1.1.0dev
tables: 3.2.2
numexpr: 2.5
matplotlib: 1.5.1
openpyxl: None
xlrd: 0.9.4
xlwt: 1.1.2
xlsxwriter: 0.7.3
lxml: None
bs4: 4.4.0
html5lib: 0.999
httplib2: 0.9.1
apiclient: 1.5.0
sqlalchemy: 1.0.11
pymysql: None
psycopg2: None
jinja2: 2.8
boto: 2.38.0
pandas_datareader: 0.2.1
Metadata
Metadata
Assignees
Labels
Error ReportingIncorrect or improved errors from pandasIncorrect or improved errors from pandasIndexRelated to the Index class or subclassesRelated to the Index class or subclasses