Maison  >  Article  >  développement back-end  >  Comment réussir à insérer une liste dans une cellule DataFrame en Python ?

Comment réussir à insérer une liste dans une cellule DataFrame en Python ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-29 18:50:02745parcourir

How to Successfully Insert a List into a DataFrame Cell in Python?

Insérer une liste dans une cellule d'un DataFrame

Lorsque vous traitez des données clairsemées dans les pandas Python, il peut être difficile d'insérer des listes dans des cellules spécifiques. Tenter de telles opérations à l'aide de méthodes courantes telles que df.ix[1,'B'] = abc entraîne souvent des erreurs dues à des longueurs de clé incompatibles.

Solutions alternatives et limitations

Tentatives de contournement du erreur en plaçant la liste entre crochets supplémentaires (par exemple, df.ix[1,'B'] = [abc]) ou en utilisant des représentations sous forme de chaîne (par exemple, df.ix[1,'B'] = ', '.join (abc)) ne sont pas satisfaisants, car ils introduisent des éléments supplémentaires ou modifient la structure de données prévue.

Utiliser df.at pour l'insertion de liste

Une approche plus efficace consiste à utiliser df.at au lieu de df.ix ou df.loc. df.at cible spécifiquement une seule cellule, éliminant ainsi l'ambiguïté qui peut conduire aux erreurs susmentionnées.

<code class="python">import pandas as pd

# Create a dataframe with mixed data types
df = pd.DataFrame(data={'A': [1, 2, 3], 'B': ['x', 'y', 'z']})

# Insert a list into cell 1B
df.at[1, 'B'] = ['m', 'n']

print(df)</code>

Cette opération insère avec succès ['m', 'n'] dans la cellule 1B sans aucune erreur.

Assurer la compatibilité des types de colonnes

Il est important de noter que la colonne dans laquelle vous avez l'intention d'insérer la liste doit avoir son type défini sur « objet ». Si la colonne a un type différent, tel que « int64 », une erreur se produira. Pour résoudre ce problème, vous pouvez convertir le type de la colonne avant de tenter l'insertion :

<code class="python">df = pd.DataFrame(data={'A': [1, 2, 3], 'B': [1,2,3]})
df['B'] = df['B'].astype('object')

# Now, list insertion will work as expected
df.at[1, 'B'] = [1, 2, 3]</code>

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