human
I am working on the file "Datasets/CNGMD/.ipynb_checkpoints/2015-checkpoint.ipynb".
The first task is:
P0307: Disposiciones normativas sustantivas en materia de desarrollo urbano u ordenamiento territorial
Es necesario cambiar el encoding para leer los archivos de este parametro
Can you write Python program for it?

Give me a the Python program you requested?
assistant
#Here is the Python program you requested.

# Redefinición de la función para revisar metadatos, porque los datos de la carpeta 'catálogos' de P0307 
# no coinciden con los titulos de las columnas en la carpeta 'Conjunto de datos'.

def getmetab(csvpath, textcoding):
    # Importa el csv
    try: dicdf = pd.read_csv(csvpath, 
                    index_col=0, 
                    parse_dates=False
                   )
    except: dicdf = pd.read_csv(csvpath, 
                    index_col=0, 
                    parse_dates=False, 
                    encoding = textcoding,
                   )
    
    # Renombra las columnas
    dicdf.columns = list(dicdf.iloc[1])
    
    # Crea columna con el indice
    dicdf['text_arc'] = dicdf.index

    # Extrae el nombre del csv fuente en una columna independiente
    def getarc(x):
        try: return re.search('(?<=(o: ))([A-Z])\w+', x).group()
        except: return None
    dicdf['arc'] = dicdf['text_arc'].apply(lambda x: getarc(x))

    # Extrae la descripcion del archivo en una columna independiente
    def getdescarc(x):
        try: return re.search('\(([^)]+)\)', x).group(1)
        except: return None
    dicdf['desc_arc'] = dicdf['text_arc'].apply(lambda x: getdescarc(x))
    
    # Marca columnas que se van a eliminar (Las columnas de donde se sacaron las variables 'arc' y 'desc_arc')
    dicdf['delete1'] = dicdf[list(dicdf.columns)[1:6]].notnull().sum(axis = 1)
    
    # Rellenar valores NaN
    dicdf = dicdf.fillna(method='ffill')
    
    # Eliminar valores marcados previaente
    dicdf = dicdf[dicdf.delete1 != 0]
    
    # Eliminar encabezados de columna repetidos
    dicdf = dicdf[dicdf.Descripción != 'Descripción']
    
    # Asignar nuevo indice y eliminar columna 'arc'
    dicdf = dicdf.set_index('arc')
    
    # Elimina columna delete1
    del dicdf['delete1']
    
    # Renombra la columna de descripciones de codigos
    dicdf.columns.values[5] = 'Descripcion codigos'
    
    # Dame el DataFrame
    return dicdf

# También es necesario redefinir la función para hacer consultas a los...