Lorsque vous traitez des données éparses 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.
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.
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é pouvant conduire aux erreurs susmentionnées.
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)
Cette opération insère avec succès ['m', 'n'] dans la cellule 1B sans aucune erreur.
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 :
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]
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