L'indice doit être appelée avec une collection d'un certain type: attribuer le nom de colonne de dataframe

J'ai reweightTarget comme suit, et je veux la convertir en une pandas Dataframe. Cependant, j'ai eu l'erreur suivante:

TypeError: Index(...) doit être appelée avec une collection de quelque sorte,
"t" a été adoptée

Si je supprime columns='t', il fonctionne très bien. Quelqu'un peut-il expliquer ce qu'il se passe?

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
il suffit de changer columns='t' à columns=['t'].
Vous pouvez également faire reweightTarget.to_frame('t')

OriginalL'auteur Lisa | 2016-07-26