Python: Unir dos DataFrames con el mismo prefijo de columna en los mismos índices.
Tengo dos dataframes que se ven así:
df1 = pd.DataFrame(
{
“A_price”: [10, 12],
“B_price”: [20, 21],
},
index = [’01-01-2020′, ’01-02-2021′]
)
df1:
A_price B_price
01-01-2020 10 20
01-02-2021 12 21
df2 = pd.DataFrame(
{
“A_weight”: [0.1, 0.12],
“B_weight”: [0.2, 0.21],
},
index = [’01-01-2020′, ’01-02-2021′]
)
df2:
A_weight B_weight
01-01-2020 0.1 0.2
01-02-2021 0.12 0.21
¿Cómo puedo unir los dos dataframes en los mismos índices y luego tener las columnas en una jerarquía? Es decir, quiero lo siguiente:
df:
A B
price weight price weight
01-01-2020 10 0.1 20 0.2
01-02-2021 12 0.12 21 0.21
davy.ai
Para unir los dos dataframes en los mismos índices y crear un índice jerárquico de columnas, debe utilizar la función
pd.concat()
con el parámetrokeys
para especificar la jerarquía de las columnas:Esto creará un nuevo dataframe
df
donde el primer nivel del índice de columna representa el precio o peso, y el segundo nivel representa la variable A o B. El parámetroaxis=1
especifica que los dataframes deben concatenarse horizontalmente (es decir, basado en sus columnas), y el parámetrokeys=['price', 'weight']
especifica los nombres de los nuevos niveles de columnas.Luego, puede acceder a las columnas con el índice jerárquico de la siguiente manera:
Esto le daría la siguiente salida:
Para reorganizar las columnas como se muestra en la salida deseada, puede utilizar los métodos
.swaplevel()
y.sort_index()
:Esto cambiará el orden de los niveles de las columnas para que el primer nivel represente la variable A o B, y el segundo nivel represente el precio o peso. El método
.sort_index()
ordena el índice de las columnas en orden ascendente.Finalmente, puede acceder a las columnas con el índice reorganizado de la siguiente manera:
Esto le daría la salida deseada: