Skip to content

BUG: Creating Index name using names names argument, doesn't set index name #19082

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

Open
jsnowacki opened this issue Jan 4, 2018 · 7 comments

Comments

@jsnowacki
Copy link
Contributor

Code Sample, a copy-pastable example if possible

# This is true
i = pd.Index([], name='a')
assert i.name == 'a'
assert i.names == ('a',)

# This is false (fails assertion)
i = pd.Index([], names=('a',))
assert i.name == 'a'
assert i.names == ('a',)

Problem description

Setting Index name using name parameter works correctly, but using names parameter doesn;t do anything, i.e. i.name is None. While the documentation doesn't list names as a parameter, since it is an attribute, it gets listed as a parameter, e.g. in IDE.

Expected Output

# This is true
i = pd.Index([], name='a')
assert i.name == 'a'
assert i.names == ('a',)

# This is also true
i = pd.Index([], names=('a',))
assert i.name == 'a'
assert i.names == ('a',)

Output of pd.show_versions()

INSTALLED VERSIONS ------------------ commit: None python: 3.6.3.final.0 python-bits: 64 OS: Windows OS-release: 10 machine: AMD64 processor: Intel64 Family 6 Model 94 Stepping 3, GenuineIntel byteorder: little LC_ALL: None LANG: None LOCALE: None.None

pandas: 0.22.0
pytest: 3.3.1
pip: 9.0.1
setuptools: 36.5.0.post20170921
Cython: 0.26.1
numpy: 1.13.3
scipy: 0.19.1
pyarrow: 0.7.1
xarray: None
IPython: 6.1.0
sphinx: 1.6.3
patsy: 0.4.1
dateutil: 2.6.1
pytz: 2017.2
blosc: None
bottleneck: 1.2.1
tables: 3.4.2
numexpr: 2.6.2
feather: 0.4.0
matplotlib: 2.1.0
openpyxl: 2.4.8
xlrd: 1.1.0
xlwt: 1.3.0
xlsxwriter: 1.0.2
lxml: 4.1.0
bs4: 4.6.0
html5lib: 0.999999999
sqlalchemy: 1.1.13
pymysql: None
psycopg2: None
jinja2: 2.9.6
s3fs: None
fastparquet: 0.1.3
pandas_gbq: 0.2.1
pandas_datareader: 0.5.0

@TomAugspurger
Copy link
Contributor

I think this is accommodate the fact that Index(...) may return a MultiIndex

In [9]: pd.Index([('a', 'b')], names=['a', 'b'])
Out[9]:
MultiIndex(levels=[['a'], ['b']],
           labels=[[0], [0]],
           names=['a', 'b'])

It'd be good to document that, and perhaps add it to the signature? That may be more trouble than it's worth if it breaks other things.

@TomAugspurger TomAugspurger added Docs Indexing Related to indexing on series/frames, not to indexes themselves MultiIndex Effort Low good first issue labels Jan 5, 2018
@TomAugspurger TomAugspurger added this to the Next Major Release milestone Jan 5, 2018
@spacesphere
Copy link
Contributor

As I can see, names is used only when trying to create MultiIndex, otherwise it's just ignored.
There's the set_names method that can be used instead of plain assignment to the name attribute when creating new Index object to avoid described behaviour. It doesn't seem to break other things.

@TomAugspurger
Copy link
Contributor

@PoppyBagel, thanks. Interested in making a PR adding and documenting names?

@spacesphere
Copy link
Contributor

@TomAugspurger, if you don't mind I could work on this issue.
But there's still a question: should names be added as an explicit parameter to the Index constructor or it may be left in optional kwargs? I think it's too specific case to change the signature (if I got your previous comment right).

@TomAugspurger
Copy link
Contributor

TomAugspurger commented Jan 8, 2018 via email

@jbrockmendel jbrockmendel removed the Indexing Related to indexing on series/frames, not to indexes themselves label Feb 18, 2020
@mroeschke mroeschke removed this from the Contributions Welcome milestone Oct 13, 2022
@ajamous1
Copy link

I tried fixing this right now, based on what Tom suggested earlier

@riteshpen
Copy link

Has this issue been resolved? I am looking for a first time open source contribution.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
7 participants