Skip to content

Wrong behavior and/or error message when assigning row with empty columns #17895

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
toobaz opened this issue Oct 16, 2017 · 0 comments
Open
Labels
API - Consistency Internal Consistency of API/Behavior Bug Error Reporting Incorrect or improved errors from pandas Indexing Related to indexing on series/frames, not to indexes themselves

Comments

@toobaz
Copy link
Member

toobaz commented Oct 16, 2017

Code Sample, a copy-pastable example if possible

In [2]: df = pd.DataFrame(index=[1,2,3])

In [3]: df.loc[1] = 3

In [4]: df
Out[4]: 
Empty DataFrame
Columns: []
Index: [1, 2, 3]

In [5]: df.loc[4] = 3
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-5-fe31ec4a62f3> in <module>()
----> 1 df.loc[4] = 3

/home/nobackup/repo/pandas/pandas/core/indexing.py in __setitem__(self, key, value)
    192             key = com._apply_if_callable(key, self.obj)
    193         indexer = self._get_setitem_indexer(key)
--> 194         self._setitem_with_indexer(indexer, value)
    195 
    196     def _has_valid_type(self, k, axis):

/home/nobackup/repo/pandas/pandas/core/indexing.py in _setitem_with_indexer(self, indexer, value)
    421                     # no columns and scalar
    422                     if not len(self.obj.columns):
--> 423                         raise ValueError("cannot set a frame with no defined "
    424                                          "columns")
    425 

ValueError: cannot set a frame with no defined columns

Problem description

Either #17894 is accepted, and then In [5]: should just expand the index, and not raise an error...

... or it is not accepted, and then In [3]: should raise.

In particular, the error message of In [5]: is misleading: one can "set" a frame with no defined columns, as long as the label is in the index.

Expected Output

Depends on #17894 .

Output of pd.show_versions()

INSTALLED VERSIONS

commit: 5bf7f9a
python: 3.5.3.final.0
python-bits: 64
OS: Linux
OS-release: 4.9.0-3-amd64
machine: x86_64
processor:
byteorder: little
LC_ALL: None
LANG: it_IT.UTF-8
LOCALE: it_IT.UTF-8

pandas: 0.21.0rc1+18.g5bf7f9a4f
pytest: 3.0.6
pip: 9.0.1
setuptools: None
Cython: 0.25.2
numpy: 1.12.1
scipy: 0.19.0
pyarrow: None
xarray: None
IPython: 5.1.0.dev
sphinx: 1.5.6
patsy: 0.4.1
dateutil: 2.6.0
pytz: 2017.2
blosc: None
bottleneck: 1.2.1
tables: 3.3.0
numexpr: 2.6.1
feather: 0.3.1
matplotlib: 2.0.0
openpyxl: None
xlrd: 1.0.0
xlwt: 1.1.2
xlsxwriter: 0.9.6
lxml: None
bs4: 4.5.3
html5lib: 0.999999999
sqlalchemy: 1.0.15
pymysql: None
psycopg2: None
jinja2: 2.9.6
s3fs: None
fastparquet: None
pandas_gbq: None
pandas_datareader: 0.2.1

@jreback jreback added API Design Difficulty Intermediate Indexing Related to indexing on series/frames, not to indexes themselves labels Oct 17, 2017
@jreback jreback added this to the Next Major Release milestone Oct 17, 2017
@jbrockmendel jbrockmendel added the Error Reporting Incorrect or improved errors from pandas label Jun 12, 2021
@jbrockmendel jbrockmendel added API - Consistency Internal Consistency of API/Behavior Bug and removed Enhancement labels Jan 8, 2022
@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
API - Consistency Internal Consistency of API/Behavior Bug Error Reporting Incorrect or improved errors from pandas Indexing Related to indexing on series/frames, not to indexes themselves
Projects
None yet
Development

No branches or pull requests

4 participants