Las pandas recortan los espacios en blanco iniciales y finales en un dataframe

Desarrollar una función que recorta los espacios en blanco iniciales y finales.

Aquí hay una muestra simple, pero el archivo real contiene filas y columnas mucho más complejas.

df=pd.DataFrame([["A b ",2,3],[np.nan,2,3],\ [" random",43,4],[" any txt is possible "," 2 1",22],\ ["",23,99],[" help ",23,np.nan]],columns=['A','B','C']) 

el resultado debería eliminar todos los espacios en blanco iniciales y finales, pero retener el espacio entre el texto.

 df=pd.DataFrame([["A b",2,3],[np.nan,2,3],\ ["random",43,4],["any txt is possible","2 1",22],\ ["",23,99],["help",23,np.nan]],columns=['A','B','C']) 

Tenga en cuenta que la función debe cubrir todas las situaciones posibles. gracias

Creo que es necesario verificar si los valores son cadenas, porque los valores mixtos en columna son numéricos con cadenas y para cada strip llamada de cadena:

 df = df.applymap(lambda x: x.strip() if isinstance(x, str) else x) print (df) ABC 0 A b 2 3.0 1 NaN 2 3.0 2 random 43 4.0 3 any txt is possible 2 1 22.0 4 23 99.0 5 help 23 NaN 

Si las columnas tienen los mismos dtypes, no obtenga NaN como en su muestra para valores numéricos en la columna B :

 cols = df.select_dtypes(['object']).columns df[cols] = df[cols].apply(lambda x: x.str.strip()) print (df) ABC 0 A b NaN 3.0 1 NaN NaN 3.0 2 random NaN 4.0 3 any txt is possible 2 1 22.0 4 NaN 99.0 5 help NaN NaN