He estado trabajando con datos importados de un CSV. Los pandas cambiaron algunas columnas para flotar, por lo que ahora los números en estas columnas se muestran como puntos flotantes. Sin embargo, necesito que se muestren como enteros o sin coma. ¿Hay alguna manera de convertirlos a enteros o no mostrar la coma?
230
df.col = df.col.astype(int)
df = df.astype(int)
Respuestas:
Para modificar la salida flotante, haga esto:
fuente
df.a = df.a.astype(float)
? ¿Esto hace una copia (no estoy seguro de cómo se usa elcopy
parámetroastype()
)? De todos modos para actualizar el tipo "en el lugar"?DF.({'200': {'#': 354, '%': 0.9971830985915493}, '302': {'#': 1, '%': 0.0028169014084507044}})
Tenga en cuenta que # se convierte en flotante y son filas, no columnas. porque cada uno es unSeries
que solo puede almacenar un solo tipo de uniforme?dtype
? Si esdtype
entonces usted necesita para crear estas columnasdtype
object
por lo que permite mixta, de lo contrario mi consejo sería utilizar simplemente flotar y cuando las comparaciones que hacen usonp.isclose
Use la
pandas.DataFrame.astype(<type>)
función para manipular los tipos de columna.EDITAR:
Para manejar valores perdidos:
fuente
Teniendo en cuenta el siguiente marco de datos:
Usando una lista de nombres de columna, cambie el tipo de varias columnas con
applymap()
:O para una sola columna con
apply()
:fuente
ValueError: ('cannot convert float NaN to integer', u'occurred at index <column_name>')
df['C'] = df['C'].dropna().apply(np.int64)
Esta es una solución rápida en caso de que desee convertir más columnas de su
pandas.DataFrame
flotante a entero considerando también el caso de que pueda tener valores de NaN.Intenté con
else x)
yelse None)
, pero el resultado sigue teniendo el número flotante, así que lo uséelse ""
.fuente
""
a todos los valores encol
Ampliando el uso mencionado del
pandas.DataFrame.astype(<type>)
método @Ryan G , se puede usar elerrors=ignore
argumento para convertir solo aquellas columnas que no producen un error, lo que simplifica notablemente la sintaxis. Obviamente, se debe tener precaución al ignorar los errores, pero para esta tarea resulta muy útil.De pandas.DataFrame.astype docs:
fuente
fuente
Para convertir todas las columnas flotantes a int
fuente
Aquí hay una función simple que convertirá los flotantes en el tipo entero más pequeño posible que no pierda ninguna información. Por ejemplo,
100.0 se puede convertir de flotante a entero, pero 99.9 no (sin perder información por redondeo o truncamiento)
Además, 1.0 se puede
int8
bajar sin perder información, pero el tipo entero más pequeño para 100_000.0 esint32
Ejemplos de código:
fuente
Las columnas que deben convertirse a int se pueden mencionar en un diccionario también como a continuación
fuente
fuente
astype(int)
Ya fue mencionado varias veces. Esta respuesta no agrega nada nuevo.