Extraer int de la cadena en Pandas

Digamos que tengo un df como

 AB 1 V2 3 W42 1 S03 2 T02 3 U71 

Quiero tener una nueva columna (ya sea al final de df o reemplazar la columna B con ella, ya que no importa) que solo extraiga el int de la columna B Eso es lo que quiero que se vea la columna C

 C 2 42 3 2 71 

Por lo tanto, si hay un 0 delante del número, como para 03, quiero devolver 3 no 03

¿Cómo puedo hacer esto?

Puedes convertir a cadena y extraer el entero usando expresiones regulares.

 df['B'].str.extract('(\d+)').astype(int) 

Suponiendo que siempre hay exactamente una letra principal

 df['B'] = df['B'].str[1:].astype(int) 

Escribí un pequeño bucle para hacer esto, ya que no tenía mis cadenas en un DataFrame, sino en una lista. De esta manera, también puede agregar una pequeña instrucción if para tener en cuenta los flotantes:

 output= '' input = 'whatever.007' for letter in input : try : int(letter) output += letter except ValueError : pass if letter == '.' : output += letter 

salida = flotador (salida)

o puede int (salida) si lo desea.

Preparando el DF para tener el mismo que el tuyo:

 df = pd.DataFrame({'A': [1, 3, 1, 2, 3], 'B' : ['V2', 'W42', 'S03', 'T02', 'U71']}) df.head() 

Ahora manipúlelo para obtener el resultado deseado:

 df['C'] = df['B'].apply(lambda x: re.search(r'\d+', x).group()) df.head() ABC 0 1 V2 2 1 3 W42 42 2 1 S03 03 3 2 T02 02 4 3 U71 71