pandas: comment stocker une liste dans un dataframe? [dupliquer]

cette question a déjà une réponse ici:

  • Python pandas insérer la liste dans une cellule 3 réponses

je veux définir une valeur de cellule comme une liste. Par exemple:

df.loc['a']['b'] = ['one', 'two', 'three']

cependant, je ne peux pas le faire car j'obtiens l'erreur suivante:

ValueError: Must have equal len keys and value when setting with an iterable

mon dataframe est actuellement juste tous les zéros et est nxn. Y a-t-il un moyen de définir la valeur de la cellule de sorte que lorsque j'exécute df.loc['a']['b'] , je récupère ['one', 'two', 'three'] .

4
demandé sur AlanH 2016-07-01 01:01:40

2 réponses

le problème est que vous avez probablement une base de données où toutes les colonnes sont des séries de type float ou int. La solution est de les changer de type d'objet.

In [3]: df = pd.DataFrame(np.zeros((4,4)))

In [4]: df
Out[4]: 
     0    1    2    3
0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0
3  0.0  0.0  0.0  0.0

In [5]: df.dtypes
Out[5]: 
0    float64
1    float64
2    float64
3    float64
dtype: object

In [6]: df = df.astype('object')

In [7]: df[1][2] = [1,2,3]

In [8]: df
Out[8]: 
   0          1  2  3
0  0          0  0  0
1  0          0  0  0
2  0  [1, 2, 3]  0  0
3  0          0  0  0
16
répondu juanpa.arrivillaga 2016-06-30 22:28:33

C'est une façon torturée de le faire. J'espère vraiment que quelqu'un a une meilleure réponse.

df.loc[['a'], ['b']] = df.loc[['a'], ['b']].applymap(lambda x: ['one', 'two', 'three'])
3
répondu piRSquared 2016-06-30 22:10:48