Le dataframe que je veux trier a des noms comprenant des caractères, des signes de ponctuation, des nombres, des points, des parenthèses, etc. avec plus de 5000 colonnes. Toutes ces colonnes sont dupliquées 4 fois. Les valeurs sont les mêmes pour les colonnes dupliquées. Un sous-ensemble de noms d'en-tête ressemble à :

    ['I','single', 'game', 'I.1', 'Cliff', ',', 'on', 'me', 'RT', '@USER', ':', 'Texas', '(', 
     'cont', ')', 'URL', 'RT.1', '@USER.1', ':.1', '4', 'the', 'lingerie', 'party', '?????', 
     'Wednesday', 'ã\x80\x8bhave', 'a.1', 'nice', 'day', ':)', 'RT.2', '@USER.2']

Tout d'abord, je dois supprimer les suffixes entiers de tous les noms comme "I.1" qui devraient être "I" et de même, tous les autres suffixes de tous les noms de colonnes.

Deuxièmement, toutes les colonnes sont répétées quatre fois dans le même ordre. Je dois les trier selon cet ordre :

      ['I', 'I','I','I','single','single''single''single','game', 'game','game','game','I',  
       'I','I','I','.', 'Cliff', 'Cliff','Cliff','Cliff',','','','',', 'on','on','on','on',  
       .... and so on]

Ici, les « moi » avec « simple » et « jeu » devraient se réunir et non les autres « moi ». Les fonctions comme sort_index() et reset_index() donnent un ordre de tri mais pas celui dont j'ai besoin.

De l'aide.

0
codeDB 14 nov. 2020 à 20:04

1 réponse

Meilleure réponse

J'ai essayé différentes méthodes, mais en raison de la nature étrange des caractères en tant que noms et d'une longue liste de colonnes avec des exigences de format spécifiques, je n'ai pas pu trouver de solution appropriée.

La solution que j'ai trouvée et qui a fonctionné pour moi est que je transpose d'abord la trame de données. Ensuite, je crée une colonne d'index séparée avec des nombres et j'utilise cet index pour trier la trame de données dans le format que j'ai réacquis. Bien que ce ne soit peut-être pas la solution parfaite, en le faisant, je peux facilement effectuer un traitement supplémentaire dessus.

0
codeDB 16 nov. 2020 à 10:21