web-dev-qa-db-fra.com

Personnalisation du séparateur dans les pandas read_csv

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?

9
Peaceful

Oui, vous pouvez utiliser une expression régulière simple telle que sep='\s+' pour désigner un ou plusieurs espaces.

8
Ted Petrou

Vous pouvez également utiliser le paramètre skipinitialspace=True, qui ignore les espaces précédant tout délimiteur. 

3
piRSquared

Vous pouvez directement utiliser delim_whitespace

import pandas as pd df = pd.read_csv('myfile.dat', delim_whitespace = 1 )

2
nlahri

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. 

0
Dustin Williams