Skip to content

Index Name vanishes when calling concat on two objects with different order indices #19616

Closed
@swarnakumar

Description

@swarnakumar

Using pd.concat results in index name disappearing when the index is not in the same order for DataFrames being concatenated

>>> df1 = pd.DataFrame({'a': [1, 2], 'b': [3,4]}, index=pd.Index(['a', 'b'], name='ind'))

>>> df1
     a  b
ind
a    1  3
b    2  4

Now create another dataframe, with the same index, but in a different order

>>> df2 = pd.DataFrame({'c': [4,3]}, index=pd.Index(['b', 'a'], name='ind'))

>>> df2
     c
ind
b    4
a    3

>>> df = pd.concat([df1, df2], axis=1)

>>> df.index.names
FrozenList([None])

Problem description

This is inconsistent with behaviour with the index is ordered the same for both DataFrames.

The right behaviour should be: the index name always being maintained

Expected Output

>>> df.index.names == df1.index.names == df2.index.names
True

Output of pd.show_versions()

INSTALLED VERSIONS

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

pandas: 0.21.1
pytest: 3.3.2
pip: 9.0.1
setuptools: 38.2.4
Cython: 0.27.3
numpy: 1.13.3
scipy: 1.0.0
pyarrow: 0.8.0
xarray: None
IPython: 6.2.1
sphinx: None
patsy: 0.5.0
dateutil: 2.6.1
pytz: 2017.3
blosc: None
bottleneck: None
tables: None
numexpr: 2.6.4
feather: None
matplotlib: None
openpyxl: None
xlrd: None
xlwt: None
xlsxwriter: None
lxml: None
bs4: None
html5lib: None
sqlalchemy: None
pymysql: None
psycopg2: None
jinja2: None
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: None

Metadata

Metadata

Assignees

No one assigned

    Labels

    IndexingRelated to indexing on series/frames, not to indexes themselvesUsage Question

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions