Skip to content

pandas-0.23 breaks stack with duplicated indices  #2160

Closed
@crusaderky

Description

@crusaderky

In this script:

import pandas
import xarray

df = pandas.DataFrame(
    [[1, 2], [3, 4]],
    index=['foo', 'foo'],
    columns=['bar', 'baz'])
print(df.stack())

a = xarray.DataArray(df)
print(a.stack(s=a.dims))

The first part works both with pandas 0.22 and 0.23.
The second part works in xarray 0.10. 4 + pandas 0.22, and crashes with pandas 0.23:

  File "/mnt/resource/tmp/anaconda_guido/lib/python3.6/site-packages/xarray/core/dataarray.py", line 1115, in stack
    ds = self._to_temp_dataset().stack(**dimensions)
  File "/mnt/resource/tmp/anaconda_guido/lib/python3.6/site-packages/xarray/core/dataset.py", line 2123, in stack
    result = result._stack_once(dims, new_dim)
  File "/mnt/resource/tmp/anaconda_guido/lib/python3.6/site-packages/xarray/core/dataset.py", line 2092, in _stack_once
    idx = utils.multiindex_from_product_levels(levels, names=dims)
  File "/mnt/resource/tmp/anaconda_guido/lib/python3.6/site-packages/xarray/core/utils.py", line 96, in multiindex_from_product_levels
    return pd.MultiIndex(levels, labels, sortorder=0, names=names)
  File "/mnt/resource/tmp/anaconda_guido/lib/python3.6/site-packages/pandas/core/indexes/multi.py", line 240, in __new__
    result._verify_integrity()
  File "/mnt/resource/tmp/anaconda_guido/lib/python3.6/site-packages/pandas/core/indexes/multi.py", line 283, in _verify_integrity
    level=i))
ValueError: Level values must be unique: ['foo', 'foo'] on level 0

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions