Как соедeнить два DataFrame в pandas

У меня есть код

import pandas
d = pandas.DataFrame({'a': [1], 'b': [2]})
f = pandas.DataFrame({'a': [2], 'c': [1], 'b': [3],})
c = pandas.DataFrame({'a': [2], 'g': [4], 'b': [3], })
r = pandas.concat([d, f, c])
print(r)

В итоге я получаю

a b c g
1 2 
2 3 1 
      4

ключ "c", не переходил в конец, а оставался в середине. Вот так:

a c g b
1     2
2 1   3
    4

Ответы (2 шт):

Автор решения: Andy Pavlov

Перенумеровать колонки также можно с помощью метода reindex()

import pandas
d = pandas.DataFrame({'a': [1], 'b': [2]})
f = pandas.DataFrame({'a': [2], 'c': [1], 'b': [3],})
c = pandas.DataFrame({'a': [2], 'g': [4], 'b': [3], })
r = pandas.concat([d, f, c]).reindex(columns=['a', 'c', 'g', 'b'])
print(r)

Вывод

   a    c    g  b
0  1  NaN  NaN  2
0  2  1.0  NaN  3
0  2  NaN  4.0  3

Описание reindex() см. на https://pandas.pydata.org/docs/reference/api/pandas.DataFrame.reindex.html

→ Ссылка
Автор решения: CrazyElf

Так это же вопрос отображения. Вы всегда можете выбрать колонки в нужном порядке (и присвоить датафрейм с таким порядком отображения обратно в ваш датафрейм, если хотите):

r = r[['a','c','g','b']]
print(r)

Вывод:

   a    c    g  b
0  1  NaN  NaN  2
0  2  1.0  NaN  3
0  2  NaN  4.0  3
→ Ссылка