"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment insérer des listes dans des cellules Pandas DataFrame sans erreurs ?

Comment insérer des listes dans des cellules Pandas DataFrame sans erreurs ?

Publié le 2024-11-06
Parcourir:430

How to Insert Lists into Pandas DataFrame Cells Without Errors?

Insertion de listes dans des cellules Pandas

Problème

En Python, tenter d'insérer une liste dans une cellule d'un Pandas DataFrame peut entraîner des erreurs ou des résultats inattendus. Par exemple, lorsque vous essayez d'insérer une liste dans la cellule 1B d'un DataFrame df:

df = pd.DataFrame({'A': [12, 23], 'B': [np.nan, np.nan]})
abc = ['foo', 'bar']

Ce qui suit tente d'insérer la liste abc dans 1B, mais produit des erreurs ou une insertion incorrecte :

  1. df.ix[1 ,'B'] = abc - Erreur : doit avoir des clés et une valeur len égales lors de la configuration avec un itérable
  2. df.ix[1,'B'] = [abc] - Insère une liste avec un élément : [['foo', 'bar']]
  3. df.ix[1,'B'] = ', '.join(abc) - Insère une chaîne : "foo, bar"
  4. df.ix[1,'B'] = [', '.join(abc)] - Insère une liste avec un élément : ['foo, bar']

Solution

Pour insérer des listes dans les cellules d'un DataFrame sans erreurs, utilisez la méthode at, qui fait toujours référence à une seule valeur :

df.at[1, 'B'] = ['foo', 'bar']

Cela insérera la liste abc dans 1B comme prévu :

    A  B
0  12  NaN
1  23  ['foo', 'bar']

Notez que la colonne DataFrame doit avoir dtype=object pour permettre l'insertion de liste. Par exemple :

df['B'] = df['B'].astype('object')
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3