Cómo agregar números de cadena en pandas

He seguido Datarame

df = pd.DataFrame({ 'col_1': [0, 1, 2, 3], 'col_2': [4, 5, 6, 7], 'col_3': [14, 15, 16, 19] }) 

Intento convertir el numérico en cadena y luego combino cada fila en una cadena

Puedo lograr esto usando:

 df.apply(lambda x : ''.join(x.astype(str)),1) Out[209]: 0 0414 1 1515 2 2616 3 3719 dtype: object# notice here dtype is object 

Esta es la pregunta

Entonces, trato de usar la sum

 df.astype(str).sum(1) Out[211]: 0 414.0 1 1515.0 2 2616.0 3 3719.0 dtype: float64 

Note que aquí el dtype convierte en object float no.


Aquí hay más información:

 df.astype(str).applymap(type) Out[221]: col_1 col_2 col_3 0    1    2    3    

¿Por qué sum tiene este comportamiento cableado? ¿Hay alguna manera de bloquearlo convertir str nuevo a float ?

Gracias por tu ayuda 🙂

La sum no funcionó porque al devolver la serie, ya que solo hay números que se convirtió al formato de tipo de dato flotante respectivo. Solo será object si se trata de mixed datatype al aplicar funciones estándar.

Por ejemplo cuando haces

 df = pd.DataFrame({ 'col_1': [0, 1, 2, 3], 'col_2': [4, 5, 6, 7], 'col_3': [14, 15, 16, 'b'] }) df.astype(str).sum(1) 

Salida:

  
 0 0414
 1 1515
 2 2616
 3 37b
 dtype: objeto

Una alternativa para hacer la sum es con cumsum por lo que se preservará el dtype, es decir,

 s = df.astype(str).cumsum(1).iloc[:,-1] 

Salida:

 0 0414
 1 1515
 2 2616
 3 3719
 Nombre: col_3, dtype: objeto

Espero eso ayude

Si quieres usar algunos, puedes intentarlo de esta manera:

 df.astype(str).apply(lambda x: x.sum(),1) 

Salida:

 0 0414 1 1515 2 2616 3 3719 dtype: object