Pandas: Creación de marcos de datos: especificar dtypes con un diccionario

Creado en 18 ene. 2015  ·  3Comentarios  ·  Fuente: pandas-dev/pandas

Disculpas si esta característica se ha sugerido antes. Muchas de las funciones de IO (por ejemplo, read_csv ) permiten especificar fácilmente el formato de cada columna mediante un diccionario. Por lo que tengo entendido, esto no es
posible con la construcción de marco de datos regular, por ejemplo:

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

Aún mejor , sería genial si uno pudiera cambiar dtypes para las columnas del marco de datos usando una construcción similar, por ejemplo:

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

¿Hay algo así planeado ya?

API Design Dtypes Duplicate Reshaping

Comentario más útil

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

Todos 3 comentarios

ver n. ° 9133 y n. ° 4464 no es tan difícil
¿Quieres darle una oportunidad?

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

Una diferencia entre read_csv( csvFile, dtype={..} ) y df.astpye(dtype={..} ) :
En el caso de read_csv, está bien si el dict proporcionado contiene más columnas que no están en el csv, se ignoran con gracia. En el caso de astype() , se produce un error si todas las columnas definidas no están presentes en los datos.

Debería parecerse más a read_csv. Porque podemos tener dict entrantes que pueden tener algunas columnas y no otras. En este momento, esta es la solución que tengo que hacer:

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)
¿Fue útil esta página
0 / 5 - 0 calificaciones