es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo fusionar los Dataframes de columnas de nivel múltiple en una columna de nivel bajo.

Tengo varios conjuntos de datos pequeños de una base de datos que muestran los genes en diferentes vías biológicas. Mi objetivo final es encontrar qué genes aparecen en diferentes conjuntos de datos. Por esta razón, intenté crear marcos de datos multinivel de cada conjunto de datos y fusionarlos en una columna única. Sin embargo, parece que no se está llegando a ninguna parte.

Muestras de prueba: https://www.mediafire.com/file/bks9i9unfci0h1f/sample.rar/file

Creando columnas multinivel:

import pandas as pd

df1 = pd.read_csv(“Invasión bacteriana de células epiteliales.csv”)
df2 = pd.read_csv(“Vía de señalización del receptor C-tipo lectina.csv”)
df3 = pd.read_csv(“Endocitosis.csv”)

título1 = “Invasión bacteriana de células epiteliales”
título2 = “Vía de señalización del receptor C-tipo lectina”
título3 = “Endocitosis”

final1 = pd.concat({título1: df1}, axis=1)
final2 = pd.concat({título2: df2}, axis=1)
final3 = pd.concat({título3: df3}, axis=1)

Intenté usar pandas.merge() para fusionar los marcos de datos en la columna “ID de usuario”:

pd.merge(final1, final2, on=”ID de usuario”, how=”outer”)

Pero obtengo un error. No puedo usar droplevel(), porque necesito el título en la parte superior. Por lo tanto, puedo ver a qué conjunto de datos pertenece cada muestra.
¿Alguna sugerencia?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el error podría ser causado por el hecho de que la columna “ID de usuario” no existe en ninguno de los dataframes. Por lo tanto, cuando intenta fusionarlos en esta columna, pandas no puede encontrarla y genera un error.

    Para solucionar este problema, puede verificar los nombres de columna de cada dataframe usando el método df.columns para asegurarse de que todos tengan el mismo nombre de columna para los IDs de genes. Luego, puede fusionar los dataframes usando este nombre de columna común. Por ejemplo:

    # Verificar nombres de columna
    print(df1.columns)
    print(df2.columns)
    print(df3.columns)
    
    # Fusionar dataframes usando el nombre de columna común
    merged_df = pd.merge(final1, final2, on='ID de gene').merge(final3, on='ID de gene')
    
    # Imprimir el dataframe fusionado
    print(merged_df)
    

    Tenga en cuenta que en este ejemplo, asumí que los IDs de genes estaban almacenados en una columna llamada “ID de gene”. Deberá reemplazar esto por el nombre real de la columna si es diferente en sus conjuntos de datos.

    De forma predeterminada, el método merge() realiza una unión interna, lo que significa que solo se incluirán en el dataframe fusionado las filas con IDs de gene coincidentes en todos los dataframes. Si desea incluir todas las filas de todos los dataframes, puede usar el método “outer” en su lugar:

    merged_df = pd.merge(final1, final2, on='ID de gene', how='outer').merge(final3, on='ID de gene', how='outer')
    

Comments are closed.