Pandas: Criação de dataframe: especificando dtypes com um dicionário

Criado em 18 jan. 2015  ·  3Comentários  ·  Fonte: pandas-dev/pandas

Pedimos desculpas se este recurso foi sugerido antes. Muitas das funções IO (por exemplo, read_csv ) permitem o uso para especificar facilmente o formato de cada coluna usando um dicionário. Pelo que eu entendi, isso não é
possível com a construção de dataframe regular, por exemplo:

df = pd.DataFrame(data=data, columns=columns, dtypes={'colname1': str, 'colname2': np.int})

Melhor ainda , seria ótimo se alguém pudesse alterar o dtypes para as colunas do dataframe usando uma construção semelhante, por exemplo:

df.change_types({'colname1': str, 'colname2': np.int})

Já está planejado algo assim?

API Design Dtypes Duplicate Reshaping

Comentários muito úteis

Esta forma realmente funciona:
data_df = data_df.astype ( dtype = {"wheel_number": "int64", "car_name": "object", "minutes_spent": "float64"})

Todos 3 comentários

veja # 9133 e # 4464 não é tão difícil
Quer dar uma chance?

Esta forma realmente funciona:
data_df = data_df.astype ( dtype = {"wheel_number": "int64", "car_name": "object", "minutes_spent": "float64"})

Uma diferença entre read_csv( csvFile, dtype={..} ) e df.astpye(dtype={..} ) :
No caso de read_csv, está tudo bem se o dict fornecido contiver mais colunas que não estão no csv, elas serão ignoradas normalmente. No caso de astype() , ocorre um erro se todas as colunas definidas não estiverem presentes nos dados.

Deve ser mais parecido com read_csv. Porque podemos receber dict's que podem ter algumas colunas e não outras. No momento, esta é a solução alternativa que tenho que fazer:

df = pd.DataFrame( incoming_data )
gtfs_dtypes = { ... } # my master dtypes dict, having all possible column names
gtfs_dtypes_specific = { x:gtfs_dtypes.get(x,'str') for x in df.columns.tolist() }
df = df.astype(dtype=gtfs_dtypes_specific)
Esta página foi útil?
0 / 5 - 0 avaliações