I'd like to increment a cell of a dataframe:
from pandas import DataFrame
foo = DataFrame([[1,'a'],[2,'b'],[3,'c']],columns=['a','z'])
foo.ix[0,['a']] += 1
which gives the following error:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-141-cf9b905bd544> in <module>()
1 foo = DataFrame([[1,'a'],[2,'b'],[3,'c']],columns=['a','z'])
----> 2 foo.ix[0,['a']] += 1
/home/ubuntu/anaconda/lib/python2.7/site-packages/pandas/core/indexing.pyc in __setitem__(self, key, value)
86 indexer = self._convert_to_indexer(key)
87
---> 88 self._setitem_with_indexer(indexer, value)
89
90 def _has_valid_tuple(self, key):
/home/ubuntu/anaconda/lib/python2.7/site-packages/pandas/core/indexing.pyc in _setitem_with_indexer(self, indexer, value)
156 # we have an equal len list/ndarray
157 elif len(labels) == 1 and (
--> 158 len(self.obj[labels[0]]) == len(value) or len(plane_indexer[0]) == len(value)):
159 setter(labels[0], value)
160
TypeError: object of type 'int' has no len()
Even though the following will work:
foo = DataFrame([[1,4],[2,5],[3,6]],columns=['a','z'])
foo.ix[0,['a']] += 1
Which leads me to believe the issue is different column types.
How can I increment the cell value of the first dataframe?
In [1]: foo = DataFrame([[1,'a'],[2,'b'],[3,'c']],columns=['a','z'])
In [3]: foo
Out[3]:
a z
0 1 a
1 2 b
2 3 c
In [4]: foo.dtypes
Out[4]:
a int64
z object
dtype: object
In [5]: foo.ix[0,'a'] += 1
In [6]: foo
Out[6]:
a z
0 2 a
1 2 b
2 3 c
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With