Сохранение порядка столбцов - 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=' ')