J'essaie de combiner des colonnes en double dans mon Dataframe. Mon fichier de données est multiindexé et ressemble à Je pense que le Dataframe ressemble à p> J'essaie d'y parvenir par p> mais je reçois l'erreur p> d'autres messages concernant cette erreur montrent que l'utilisateur n'avait pas la colonne ils essayaient de grouper par. Est-ce que mon erreur est le résultat des noms rectoppins en double et si oui, comment puis-je le réparer? P> p>
3 Réponses :
une solution alternative:
Merci, cette méthode fonctionne, mais cela n'explique pas pourquoi le groupby code> n'abandonnait pas la même chose sans avoir à créer des colonnes supplémentaires.
En tant que bonus, je pourrais le faire dans une ligne comme df.bill (axis = 1) .ffill (Axis = 1) .iloc [:, :: 2] code> puis renommez les colonnes.
Nous pouvons convertir les noms de colonne d'abord: puis groupe par noms de colonne et mode d'utilisation: p> Axis = 1 code> ajouté à la liste des paramètres de groupeby code> (puisque nous regroupons par colonnes au lieu de lignes): p>
Donc, tout ce que je devais faire était d'ajouter le niveau = 0 code> à mon groupby code>? Pouvez-vous expliquer pourquoi?
Le problème semble être avec votre déclaration manquant Axis = 1 code> (puisque nous devons regrouper des colonnes au lieu de lignes) en tant que paramètre de groupeby. Les œuvres suivantes bien: df.groupby (df.columns.map (lambda x: x.split ('_ copy') [0], 1), axis = 1) .Apply (Lambda x: x.mode ( 1) [0]) code>
Vous manquez Axis = 1 dans le groupeby: solution alternative (sans groupe, mais similaire avec pile et instable): p> df.rename(columns=lambda x: x.split('_COPY')[0]).stack().unstack()
Merci, j'ai réalisé que j'avais une faute de frappe dans ma ligne de groupeby, donc il ne devrait donc pas y avoir de 1 code> dans ma carte carte code> code. En outre, bonne solution alternative.
Qu'est-ce qui vous empêche de simplement supprimer la colonne? Je suppose que la colonne ne serait pas nécessairement tout
nan code>. Y aurait-il des données contradictoires? Tels quem code> dans une colonne etf code> dans l'autre? Ou différents âges? Comment cela devrait-il être résolu? Ou est-ce toujours une valeur et unnan code>?@busybear c'est un bon point et cette hypothèse est correcte. Il y a toujours une valeur et un
nan code>. Je vais modifier ma question pour refléter cela, merci de pointer cela!Salut nébula, impression (df.columns) est de classe "". Donc, si vous utilisez df.groupby (df.columns), il lancera une erreur lorsque vous avez souligné ci-dessus. Vous devez utiliser df.groupby (liste (df.columns)) inonder au travail.
Salut @bhanuteez, mais je ne regroupe pas les noms complets des colonnes, je regroupe par
df.columns.map (...) code>, qui est comme groupement par[ «sexe», «sexe», «âge», «âge»] code>.@ HS-Nébula Je parle, la raison de "ValueError". Mais de toute façon, votre code a également un problème de nom de colonne.