def applymap_numeric_columns(df, func):
    """Map a function elementwise to numeric columns.
    
    All other columns are returned unchanged.
    """
    columns = df._get_numeric_data().columns
    df[columns] = df[columns].applymap(func)
    return df