Maison >développement back-end >Tutoriel Python >Comment insérer efficacement une liste dans une cellule spécifique d'un Pandas DataFrame ?

Comment insérer efficacement une liste dans une cellule spécifique d'un Pandas DataFrame ?

DDD
DDDoriginal
2024-10-30 07:47:28695parcourir

How do I effectively insert a list into a specific cell of a Pandas DataFrame?

Pandas Python : insertion d'une liste dans une cellule

Lorsque vous travaillez avec des dataframes, il est souvent nécessaire d'ajuster le contenu des cellules. Dans ce cas, la tâche consiste à insérer une liste spécifique, « abc », dans la cellule 1B d'une trame de données. Diverses tentatives ont été faites, mais chacune a rencontré ses propres défis.

Initialement, une tentative d'attribuer la liste entière directement à la cellule à l'aide de df.ix[1,'B'] = abc a entraîné une ValueError en raison d'une inadéquation entre le nombre de clés et de valeurs. Utiliser df.ix[1,'B'] = [abc] crée à la place une liste avec la liste 'abc' comme seul élément, ce qui n'est pas souhaité.

Conversion de la liste en chaîne à l'aide de df. ix[1,'B'] = ', '.join(abc) produit le contenu prévu sous forme de chaîne plutôt que de liste. De même, l'utilisation de df.ix[1,'B'] = [', '.join(abc)] crée une liste avec un seul élément de chaîne.

Tentatives ultérieures d'insertion de la liste dans des dataframes avec des les types de colonnes, impliquant à la fois des entiers et des chaînes, rencontrent une erreur. Cela suggère que le problème réside dans les types de données mixtes des colonnes.

Pour résoudre ce problème, il est recommandé d'utiliser l'attribut at au lieu de loc. Cette méthode fait systématiquement référence à une valeur unique, évitant ainsi les problèmes rencontrés avec loc. De plus, s'assurer que la colonne dans laquelle est insérée a dtype=object évite d'autres erreurs.

Par exemple, le code suivant insère avec succès la liste 'abc' dans la cellule 1B du dataframe df2 :

import pandas as pd

abc = ['foo', 'bar']
df2 = pd.DataFrame(data={'A': [12, 23], 'B': [None, None], 'C': ['bla', 'bla bla']})

df2['B'] = df2['B'].astype('object')  # Ensure 'B' has dtype=object
df2.at[1, 'B'] = abc

print(df2)

Sortie :

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn