Solución:
Convirtiendo a int
(es decir, con .astype(int).astype(str)
) no funcionará si su columna contiene nulos; a menudo es una mejor idea usar formato de cadena para especificar explícitamente el formato de su columna de cadena; (puedes configurar esto en pd.options
):
>>> pd.options.display.float_format="{:,.0f}".format
>>> df.astype(float).sum()
0 7
1 4
2 11
dtype: float64
Agrega un astype(int)
en la mezcla:
df.astype(float).sum().astype(int).astype(str)
0 7
1 4
2 11
dtype: object
Demostración de ejemplo con celdas vacías. Este no era un requisito del PO, sino para satisfacer a los detractores.
df = pd.DataFrame([
['2', '3', 'nan', None],
[None, None, None, None],
['0', '1', '4', None],
['5', 'nan', '7', None]
])
df
0 1 2 3
0 2 3 nan None
1 None None None None
2 0 1 4 None
3 5 nan 7 None
Luego
df.astype(float).sum().astype(int).astype(str)
0 7
1 4
2 11
3 0
dtype: object
Debido a que el OP no especificó lo que les gustaría que sucediera cuando faltaba una columna, presentar cero es una opción razonable.
Sin embargo, también podríamos eliminar esas columnas
df.dropna(1, 'all').astype(float).sum().astype(int).astype(str)
0 7
1 4
2 11
dtype: object
Para pandas> = 1.0:
<NA>
type se introdujo para ‘Int64’. Ahora puedes hacer esto:
df['your_column'].astype('Int64').astype('str')
Y se convertirá correctamente 1.0
para 1
.
Alternativa:
Si tu no quiero cambiar la pantalla opciones de todos los pandas, la solución @maxymoo lo hace, puede usar apply
:
df['your_column'].apply(lambda x: f'{x:.0f}')