Attribuer des pandas dataframe colonne dtypes

Je veux mettre le dtypes de plusieurs colonnes dans pd.Dataframe (j'ai un fichier que j'ai eu à analyser manuellement dans une liste de listes, comme le fichier n'a pas été facile pour le pd.read_csv)

import pandas as pd
print pd.DataFrame([['a','1'],['b','2']],
                   dtype={'x':'object','y':'int'},
                   columns=['x','y'])

- Je obtenir

ValueError: entry not a 2- or 3- tuple

La seule façon que je peux le mettre en boucle dans chaque colonne de la variable et de refonte avec astype.

dtypes = {'x':'object','y':'int'}
mydata = pd.DataFrame([['a','1'],['b','2']],
                      columns=['x','y'])
for c in mydata.columns:
    mydata[c] = mydata[c].astype(dtypes[c])
print mydata['y'].dtype   #=> int64

Est-il un meilleur moyen?

  • Ce serait peut-être une bonne bug / feature request, actuellement, je ne suis pas sûr de ce que dtype arg est en train de faire (vous pouvez la passer un scalaire, mais ce n'est pas stricte)...
  • FYI: df = pd.DataFrame([['a','1'],['b','2']], dtype='int', columns=['x','y']) "œuvres"... mais :s
  • Ouais, les "œuvres" en effet; de façon imprévisible...
  • Cette GitHub problème peut vite devenir pertinentes: github.com/pydata/pandas/issues/9287
InformationsquelleAutor hatmatrix | 2014-01-17