Python Forum
Limitation in inserting DF - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: Data Science (https://python-forum.io/forum-44.html)
+--- Thread: Limitation in inserting DF (/thread-20986.html)



Limitation in inserting DF - Johnse - Sep-09-2019

Hello,

There is a limitation in inserting to a data frame.

For example, I have data frame as:

ndf = pd.DataFrame(columns=[‘A’, ‘B’])
ndf.iloc[5,0] = ‘a’
I can’t insert more than 5 values or 5 indexes ?

Please advise !


RE: Limitation in inserting DF - perfringo - Sep-10-2019

It's always good to read built-in help which usually contains useful information:

>>> import pandas as pd
>>> help(pd.DataFrame.iloc)
Help on property:

    Purely integer-location based indexing for selection by position.
    
    ``.iloc[]`` is primarily integer position based (from ``0`` to
    ``length-1`` of the axis), but may also be used with a boolean
    array.
    
    Allowed inputs are:
    
    - An integer, e.g. ``5``.
    - A list or array of integers, e.g. ``[4, 3, 0]``.
    - A slice object with ints, e.g. ``1:7``.
    - A boolean array.
    - A ``callable`` function with one argument (the calling Series, DataFrame
      or Panel) and that returns valid output for indexing (one of the above).
      This is useful in method chains, when you don't have a reference to the
      calling object, but would like to base your selection on some value.
    
    ``.iloc`` will raise ``IndexError`` if a requested indexer is
    out-of-bounds, except *slice* indexers which allow out-of-bounds
    indexing (this conforms with python/numpy *slice* semantics).

/..../ 
You request index which is out of bounds and documentation states that in this case .iloc will raise IndexError.


RE: Limitation in inserting DF - Johnse - Sep-10-2019

(Sep-10-2019, 07:46 AM)perfringo Wrote: It's always good to read built-in help which usually contains useful information:
 >>> import pandas as pd >>> help(pd.DataFrame.iloc) Help on property: Purely integer-location based indexing for selection by position. ``.iloc[]`` is primarily integer position based (from ``0`` to ``length-1`` of the axis), but may also be used with a boolean array. Allowed inputs are: - An integer, e.g. ``5``. - A list or array of integers, e.g. ``[4, 3, 0]``. - A slice object with ints, e.g. ``1:7``. - A boolean array. - A ``callable`` function with one argument (the calling Series, DataFrame or Panel) and that returns valid output for indexing (one of the above). This is useful in method chains, when you don't have a reference to the calling object, but would like to base your selection on some value. ``.iloc`` will raise ``IndexError`` if a requested indexer is out-of-bounds, except *slice* indexers which allow out-of-bounds indexing (this conforms with python/numpy *slice* semantics). /..../ 
You request index which is out of bounds and documentation states that in this case .iloc will raise IndexError.

Yes I understand is out of bound and it will state the error but why is out of bound.
I could insert something like the 4, or 3 position etc. what do you advise I use to insert into a data frame by position in row/column ?


RE: Limitation in inserting DF - perfringo - Sep-10-2019

I could not replicate it:

>>> import pandas as pd
>>> df = pd.DataFrame(columns=['a', 'b'])
>>> df.iloc[0, 0] = 'a'
/.../
IndexError: single positional indexer is out-of-bounds