Asif Iqbal wrote: > On Mon, May 21, 2018 at 9:28 AM, Peter Otten <__pete...@web.de> wrote: > >> Asif Iqbal wrote: >> >> > Hi, >> > >> > I am trying to add a new row to a new date in the dataframe like below >> > >> > df.loc['2018-01-24'] = [0,1,2,3,4,5] >> > >> > And I am getting the following error >> > >> > ValueError: cannot set using a list-like indexer with a different >> length >> > than the value >> > >> > I do have the right number of columns and I can lookup a row by the >> > date >> > >> > df.loc['2018-01-23'] >> > >> > df.shape >> > (8034, 6) >> > >> > df.index >> > DatetimeIndex(['2018-01-23', '2018-01-22', '2018-01-19', >> > '2018-01-18', >> > '2018-01-17', '2018-01-16', '2018-01-12', '2018-01-11', >> > '2018-01-10', '2018-01-09', >> > ... >> > '1986-03-25', '1986-03-24', '1986-03-21', '1986-03-20', >> > '1986-03-19', '1986-03-18', '1986-03-17', '1986-03-14', >> > '1986-03-13', '2018-01-24'], >> > dtype='datetime64[ns]', name='date', length=8034, >> freq=None) >> > >> > Any idea how to add a new row to a new date? >> >> My experiments indicate that there may be multiple values with the same >> key: >> >> > >>> import pandas as pd >> >>> df = pd.DataFrame([[1,2], [3,4], [5,6], [7,8]], index=["a", "b", "a", >> "a"]) >> >>> df.loc["a"] >> 0 1 >> a 1 2 >> a 5 6 >> a 7 8 >> >> [3 rows x 2 columns] >> >>> df.loc["a"] = [10, 20] >> Traceback (most recent call last): >> File "<stdin>", line 1, in <module> >> File "/usr/lib/python3/dist-packages/pandas/core/indexing.py", line 98, >> in >> __setitem__ >> self._setitem_with_indexer(indexer, value) >> File "/usr/lib/python3/dist-packages/pandas/core/indexing.py", line >> 422, >> in _setitem_with_indexer >> self.obj._data = self.obj._data.setitem(indexer, value) >> File "/usr/lib/python3/dist-packages/pandas/core/internals.py", line >> 2396, >> in setitem >> return self.apply('setitem', *args, **kwargs) >> File "/usr/lib/python3/dist-packages/pandas/core/internals.py", line >> 2376, >> in apply >> applied = getattr(blk, f)(*args, **kwargs) >> File "/usr/lib/python3/dist-packages/pandas/core/internals.py", line >> 615, >> in setitem >> raise ValueError("cannot set using a list-like indexer " >> ValueError: cannot set using a list-like indexer with a different length >> than the value >> >> If found two ways to resolve this, >> >> (1) the obvious, ensure that the lengths are the same: >> >> >>> df.loc["a"] = [[10, 20], [30, 40], [50, 60]] >> >>> df >> 0 1 >> a 10 20 >> b 3 4 >> a 30 40 >> a 50 60 >> >> (2) pass the key as a tuple: >> >> >>> df.loc["a",] = [1000, 2000] >> >>> df >> 0 1 >> a 1000 2000 >> b 3 4 >> a 1000 2000 >> a 1000 2000 >> >> [4 rows x 2 columns] >> >> I suspect that you want neither, and instead avoid duplicate keys. > > > > I want to overwrite the row > > print ( df.loc['2018-01-24'] ) > 2018-01-24 0.0 1.0 2.0 3.0 4.0 NaN > > > df.loc['2018-01-24'] = [0,1,2,3,4,5] > ValueError: cannot set using a list-like indexer with a different length > than the value
Can you post a self-contained example, i. e. a small script that also creates a -- hopefully small -- DataFrame and then triggers the ValueError? _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor