Transformaciones de funciones definidas por el usuario en Python Pandas DataFrame
Tengo varios DataFrames en los que estoy limpiando los datos. El siguiente código funciona de forma independiente (fuera de una función), sin embargo, tengo que aplicarlo a muchos DataFrames y quiero simplificar este proceso mediante una función definida por el usuario.
¿Puedes ayudarme a corregir lo siguiente para que pueda usarlo en todos mis dataframes?
def format_df(df):
df.columns = df.columns.str
df.dropna(thresh=1, axis='columns', inplace=True)
df.dropna(thresh=80, axis=0, inplace=True)
df.columns = df.iloc[0]
df = df.iloc[1:].reset_index(drop=True)
df.columns = df.columns.str.replace(' ', '', regex=False)
df.columns = df.columns.str.replace('($)', '', regex=False)
df.columns = df.columns.str.replace('(Y/N)', 'Flag', regex=False)
df.columns = df.columns.str.replace('(x)', '', regex=False)
df.columns = df.columns.str.replace('-', '', regex=False)
return df
davy.ai
Hay algunas modificaciones que deben hacerse en el código para que funcione como una función definida por el usuario que se pueda aplicar a múltiples dataframes.
En primer lugar, la función debería recibir el nombre del dataframe como parámetro de entrada, así:
En segundo lugar, en lugar de usar el argumento “inplace” en la función dropna de pandas, debemos devolver el dataframe después de realizar las operaciones. Por lo tanto, las siguientes líneas:
deben ser reemplazadas por:
Por último, debemos asegurarnos de que el dataframe modificado se devuelva al final de la función incluyendo la línea:
La versión final de la función se vería así:
Ahora puedes aplicar esta función a cualquier dataframe pasándola como argumento a la función. Por ejemplo, si tienes un dataframe llamado “df1”, puedes aplicar la función de la siguiente manera:
Esto devolverá una versión limpia del dataframe llamada “df1_clean”.