Intento seguir este marco de datos de pandas de enlace con encabezado de 2 filas y exportar a csv para poder crear un encabezado adicional sin eliminar el encabezado original, a continuación se muestra mi codificación:
df.columns = pd.MultiIndex.from_tuples((zip(df.columns,[uniquevaluesfirstcolumnww, '', uniquevaluesfirstcolumnww1, ' ',uniquevaluesfirstcolumnww2, ' '])))Recibo un error como este: el objeto de tipo 'zip' no tiene len()
¿Alguien tiene alguna idea? a pesar de que intento agregar la lista antes del zip, pero también fallo.
Creo que el problema es el object de retorno zip en python 3 , por lo que necesito convertirlo a la list :
df.columns = pd.MultiIndex.from_tuples((list(zip(df.columns,[uniquevaluesfirstcolumnww, '', uniquevaluesfirstcolumnww1, ' ',uniquevaluesfirstcolumnww2, ' '])))) Pero parece que necesitas MultiIndex.from_arrays :
cols = list('abcdef') df = pd.DataFrame([[1,1,1,1,1,1]], columns=cols) print (df) abcdef 0 1 1 1 1 1 1 uniquevaluesfirstcolumnww = 'r' uniquevaluesfirstcolumnww1 = 's' uniquevaluesfirstcolumnww2 = 't' vals = [uniquevaluesfirstcolumnww, '', uniquevaluesfirstcolumnww1, ' ', uniquevaluesfirstcolumnww2, ' '] df.columns = pd.MultiIndex.from_arrays([df.columns, vals]) print (df) abcdef rst 0 1 1 1 1 1 1 Si las columnas tienen MultiIndex también:
cols = pd.MultiIndex.from_product([['a','b','c'], ['x','y']]) df = pd.DataFrame([[1,1,1,1,1,1]], columns=cols) print (df) abcxyxyxy 0 1 1 1 1 1 1 uniquevaluesfirstcolumnww = 'r' uniquevaluesfirstcolumnww1 = 's' uniquevaluesfirstcolumnww2 = 't' vals = [uniquevaluesfirstcolumnww, '', uniquevaluesfirstcolumnww1, ' ', uniquevaluesfirstcolumnww2, ' '] df.columns = pd.MultiIndex.from_arrays([df.columns.get_level_values(0), df.columns.get_level_values(1), vals]) print (df) abcxyxyxy rst 0 1 1 1 1 1 1