Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Index must be called with a collection of some kind: assign column name to dataframe

Tags:

I have reweightTarget as follows and I want to convert it to a pandas Dataframe. However, I got following error:

TypeError: Index(...) must be called with a collection of some kind, 't' was passed

If I remove columns='t', it works fine. Can anyone please explain what's going on?

reweightTarget   Trading dates 2004-01-31    4.35 2004-02-29    4.46 2004-03-31    4.44 2004-04-30    4.39 2004-05-31    4.50 2004-06-30    4.53 2004-07-31    4.63 2004-08-31    4.58 dtype: float64 pd.DataFrame(reweightTarget, columns='t')   --------------------------------------------------------------------------- TypeError                                 Traceback (most recent call last) <ipython-input-334-bf438351aaf2> in <module>() ----> 1 pd.DataFrame(reweightTarget, columns='t')  C:\Anaconda3\lib\site-packages\pandas\core\frame.py in __init__(self, data, index, columns, dtype, copy)     253             else:     254                 mgr = self._init_ndarray(data, index, columns, dtype=dtype, --> 255                                          copy=copy)     256         elif isinstance(data, (list, types.GeneratorType)):     257             if isinstance(data, types.GeneratorType):  C:\Anaconda3\lib\site-packages\pandas\core\frame.py in _init_ndarray(self, values, index, columns, dtype, copy)     421                     raise_with_traceback(e)     422  --> 423         index, columns = _get_axes(*values.shape)     424         values = values.T     425   C:\Anaconda3\lib\site-packages\pandas\core\frame.py in _get_axes(N, K, index, columns)     388                 columns = _default_index(K)     389             else: --> 390                 columns = _ensure_index(columns)     391             return index, columns     392   C:\Anaconda3\lib\site-packages\pandas\indexes\base.py in _ensure_index(index_like, copy)    3407             index_like = copy(index_like)    3408  -> 3409     return Index(index_like)    3410     3411   C:\Anaconda3\lib\site-packages\pandas\indexes\base.py in __new__(cls, data, dtype, copy, name, fastpath, tupleize_cols, **kwargs)     266                          **kwargs)     267         elif data is None or lib.isscalar(data): --> 268             cls._scalar_data_error(data)     269         else:     270             if (tupleize_cols and isinstance(data, list) and data and  C:\Anaconda3\lib\site-packages\pandas\indexes\base.py in _scalar_data_error(cls, data)     481         raise TypeError('{0}(...) must be called with a collection of some '     482                         'kind, {1} was passed'.format(cls.__name__, --> 483                                                       repr(data)))     484      485     @classmethod  TypeError: Index(...) must be called with a collection of some kind, 't' was passed 
like image 224
Lisa Avatar asked Jul 26 '16 21:07

Lisa


People also ask

How do you remove an index from a data frame?

The most straightforward way to drop a Pandas dataframe index is to use the Pandas . reset_index() method. By default, the method will only reset the index, forcing values from 0 - len(df)-1 as the index. The method will also simply insert the dataframe index into a column in the dataframe.

How do I rename a column in pandas?

Method 1: Using rename() function One way of renaming the columns in a Pandas Dataframe is by using the rename() function. This method is quite useful when we need to rename some selected columns because we need to specify information only for the columns which are to be renamed.


2 Answers

Documentation: http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.html

columns : Index or array-like

Column labels to use for resulting frame. Will default to np.arange(n) if no column labels are provided

Example:

df3 = DataFrame(np.random.randn(10, 5), columns=['a', 'b', 'c', 'd', 'e'])

Try to use:

pd.DataFrame(reweightTarget, columns=['t']) 
like image 130
Xyrus Avatar answered Sep 20 '22 15:09

Xyrus


When you want to set an index or columns in data frame you must pass it as a list, so either:

pd.DataFrame(reweightTarget, columns=['t'])  pd.DataFrame(reweightTarget, columns=list('t')) 
like image 24
Hamed Baziyad Avatar answered Sep 19 '22 15:09

Hamed Baziyad