Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

appending with multi-level series converts to single-level series #13465

Open
abremod opened this issue Jun 16, 2016 · 3 comments
Open

appending with multi-level series converts to single-level series #13465

abremod opened this issue Jun 16, 2016 · 3 comments
Labels
Bug Indexing Related to indexing on series/frames, not to indexes themselves MultiIndex Regression Functionality that used to work in a prior pandas version

Comments

@abremod
Copy link

abremod commented Jun 16, 2016

This was an issue that was fixed in 0.14.0, but has re-appeared in 0.18.1. The series s should have a mulit-level index, but in 18.1 it has a single-level index with a tuple for each value in the index.

Code Sample, a copy-pastable example if possible

import pandas as pd
from numpy.random import randn
a = [['bar', 'bar', 'foo', 'foo'],['one', 'two', 'one', 'two']]
t = list(zip(*a))
ind = pd.MultiIndex.from_tuples(t, names=['first', 'second'])
dat = pd.Series(randn(4), index=ind) 
s = pd.Series()
s = s.append(dat)
s.index.levels

Expected Output

FrozenList([['bar', 'foo'], ['one', 'two']])

output of pd.show_versions()

commit: None
python: 2.7.11.final.0
python-bits: 64
OS: Darwin
OS-release: 15.5.0
machine: x86_64
processor: i386
byteorder: little
LC_ALL: None
LANG: en_US.UTF-8

pandas: 0.18.1
nose: 1.3.7
pip: 8.1.2
setuptools: 22.0.5
Cython: 0.24
numpy: 1.11.0
scipy: 0.17.1
statsmodels: 0.6.1
xarray: None
IPython: 4.2.0
sphinx: 1.4.1
patsy: 0.4.1
dateutil: 2.5.3
pytz: 2016.4
blosc: None
bottleneck: 1.0.0
tables: 3.2.2
numexpr: 2.5.2
matplotlib: 1.5.1
openpyxl: 2.3.2
xlrd: 1.0.0
xlwt: 1.1.1
xlsxwriter: 0.8.9
lxml: 3.6.0
bs4: 4.4.1
html5lib: None
httplib2: None
apiclient: None
sqlalchemy: 1.0.13
pymysql: None
psycopg2: None
jinja2: 2.8
boto: 2.40.0
pandas_datareader: None

@jreback
Copy link
Contributor

jreback commented Jun 16, 2016

So this is correct; the indexes of an empty Index does not align with a MultiIndex, so the multi-index is coerced to an Index (hence the tuples).

In [16]: Series(dat).append(dat)
Out[16]: 
first  second
bar    one       0.924763
       two       1.307207
foo    one      -0.811859
       two       0.381771
bar    one       0.924763
       two       1.307207
foo    one      -0.811859
       two       0.381771
dtype: float64

In [17]: Series().append(dat)
Out[17]: 
(bar, one)    0.924763
(bar, two)    1.307207
(foo, one)   -0.811859
(foo, two)    0.381771
dtype: float64

In [18]: Series().index
Out[18]: Index([], dtype='object')

I suppose this is a bit unexpected though and probably not the intent.

If you want to do a pull-request to conform it and if it doesn't break anything else, ok.

@jreback jreback added Indexing Related to indexing on series/frames, not to indexes themselves Reshaping Concat, Merge/Join, Stack/Unstack, Explode API Design MultiIndex labels Jun 16, 2016
@jreback jreback added this to the Next Major Release milestone Jun 16, 2016
@jorisvandenbossche
Copy link
Member

But it is correct that it is a regression from 0.18.0 to 0.18.1

@jorisvandenbossche jorisvandenbossche added Regression Functionality that used to work in a prior pandas version and removed API Design labels Jun 16, 2016
@jreback
Copy link
Contributor

jreback commented Jun 16, 2016

ok possibly #12195, though more likely the various cleanups in Index w/empties are culprit.

@mroeschke mroeschke added Bug and removed Reshaping Concat, Merge/Join, Stack/Unstack, Explode labels May 11, 2020
@mroeschke mroeschke removed this from the Contributions Welcome milestone Oct 13, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Bug Indexing Related to indexing on series/frames, not to indexes themselves MultiIndex Regression Functionality that used to work in a prior pandas version
Projects
None yet
Development

No branches or pull requests

5 participants