Сохранение порядка столбцов - Python Pandas и Column Concat

Итак, мой google-fu, похоже, не делает мне справедливость с тем, что кажется тривиальной процедурой.

В Pandas для Python У меня есть 2 набора данных, я хочу объединить их. Это отлично работает с использованием .concat. Проблема в том, что .concat переупорядочивает мои столбцы. С точки зрения поиска данных это тривиально. Из "Я просто хочу открыть файл и быстро увидеть наиболее важный столбец", это раздражает.

File1.csv
Name    Username    Alias1 
Tom     Tomfoolery   TJZ
Meryl   MsMeryl      Mer
Timmy   Midsize      Yoda

File2.csv
Name    Username   Alias 1   Alias 2
Bob     Firedbob   Fire      Gingy
Tom     Tomfoolery  TJZ      Awww

Result.csv
    Alias1 Alias2   Name    Username
0   TJZ    NaN      Tom     Tomfoolery
1   Mer    NaN      Meryl   MsMeryl
2   Yoda   NaN      Timmy   Midsize
0   Fire   Gingy    Bob     Firedbob
1   TJZ    Awww     Tom     Tomfoolery

Результат прекрасен, но в файле данных, с которым я работаю, у меня 1000 столбцов. В настоящее время 2-3 наиболее важные. Есть ли способ, в этом примере игрушек, я мог бы заставить "Имя пользователя" быть первым столбцом, а "Имя" - вторым столбцом, сохраняя при этом значения ниже каждого на всем пути вниз.

Также как примечание, когда я сохраняю файл, он также сохраняет эту нумерацию сбоку (0 1 2 0 1). Если это способ предотвратить это, это будет здорово. Если нет, то это не очень важно, так как это быстрое исправление для удаления.

Спасибо!

Ответ 1

Предполагая, что конкатенированный DataFrame df, вы можете выполнить переупорядочение столбцов следующим образом:

important = ['Username', 'Name']
reordered = important + [c for c in df.columns if c not in important]
df = df[reordered]
print df

Вывод:

     Username   Name Alias1 Alias2
0  Tomfoolery    Tom    TJZ    NaN
1     MsMeryl  Meryl    Mer    NaN
2     Midsize  Timmy   Yoda    NaN
0    Firedbob    Bob   Fire  Gingy
1  Tomfoolery    Tom    TJZ   Awww

Список чисел [0, 1, 2, 0, 1] - это индекс DataFrame. Чтобы предотвратить их запись в выходной файл, вы можете использовать опцию index=False в to_csv():

df.to_csv('Result.csv', index=False, sep=' ')