Je lis beaucoup de fichiers de données différents dans divers cadres de données de pandas. Les colonnes de ces fichiers de données sont séparées par des espaces. Cependant, pour chaque fichier, le nombre d'espaces est différent (pour certains d'entre eux, il n'y a qu'un seul espace, pour d'autres, il y a deux espaces, etc.). Ainsi, chaque fois que j'importe le fichier, je dois aller manuellement à ce fichier et voir le nombre d'espaces utilisés et donner le nombre d'espaces dans sep
:
import pandas as pd
df = pd.read_csv('myfile.dat', sep = ' ')
Est-ce que je peux dire aux pandas de prendre "n'importe quel nombre d'espaces" comme séparateur? Aussi, est-il possible que je dise aux pandas d’utiliser l’onglet (\t
) ou les espaces comme séparateur?
Oui, vous pouvez utiliser une expression régulière simple telle que sep='\s+'
pour désigner un ou plusieurs espaces.
Vous pouvez également utiliser le paramètre skipinitialspace=True
, qui ignore les espaces précédant tout délimiteur.
Vous pouvez directement utiliser delim_whitespace
import pandas as pd
df = pd.read_csv('myfile.dat', delim_whitespace = 1 )
Une chose que j'ai trouvée est si vous utilisez un séparateur non pris en charge. Pandas/Dask devront utiliser le moteur Python au lieu du moteur C. C'est une bonne affaire plus lente.