Me pregunto si hay un método útil para ordenar las columnas de un marco de datos basado en otro que tiene las mismas columnas pero con un orden diferente. ¿O tengo que hacer un bucle para lograr esto?
Prueba esto:
df2 = df2[df1.columns]Manifestación:
In [1]: df1 = pd.DataFrame(np.random.randint(0, 10, (5,4)), columns=list('abcd')) In [2]: df2 = pd.DataFrame(np.random.randint(0, 10, (5,4)), columns=list('badc')) In [3]: df1 Out[3]: abcd 0 8 3 9 6 1 0 6 4 7 2 7 2 0 7 3 0 5 1 8 4 6 2 5 4 In [4]: df2 Out[4]: badc 0 3 8 0 4 1 7 7 4 2 2 2 7 3 8 3 2 4 9 6 4 3 4 7 1 In [5]: df2 = df2[df1.columns] In [6]: df2 Out[6]: abcd 0 8 3 4 0 1 7 7 2 4 2 7 2 8 3 3 4 2 6 9 4 4 3 1 7Solución alternativa:
df2 = df2.reindex_axis(df1.columns, axis=1) Nota: Pandas reindex_axis está en desuso desde la versión 0.21.0: use reindex en su lugar.
df2 = df2.reindex(df1.columns, axis=1)