J'ai quelques données qui ressemblent à ceci:
c stuff
c more header
c begin data
1 1:.5
1 2:6.5
1 3:5.3
Je souhaite l'importer dans un bloc de données à 3 colonnes, avec des colonnes par ex.
a , b, c
1, 1, 0.5
etc
J'ai essayé de lire les données sous forme de 2 colonnes réparties sur ':', puis de diviser la première colonne sur ''. Mais je trouve ça ennuyeux. Existe-t-il un meilleur moyen de le trier directement à l'importation?
actuellement:
data1 = pd.read_csv(file_loc, skiprows = 3, delimiter = ':', names = ['AB', 'C'])
data2 = pd.DataFrame(data1.AB.str.split(' ',1).tolist(), names = ['A','B'])
Cependant, cela est encore compliqué par le fait que mes données ont un espace de premier plan ...
Je pense que cela devrait être une tâche simple, mais actuellement, je pense à le lire ligne par ligne et à utiliser certains find replace pour nettoyer les données avant de les importer.
Une façon pourrait être d'utiliser les séparateurs d'expression régulière autorisés par le moteur python. Par exemple:
>>> !cat castle.dat
c stuff
c more header
c begin data
1 1:.5
1 2:6.5
1 3:5.3
>>> df = pd.read_csv('castle.dat', skiprows=3, names=['a', 'b', 'c'],
sep=' |:', engine='python')
>>> df
a b c
0 1 1 0.5
1 1 2 6.5
2 1 3 5.3