Панды - Изменения сортировки столбцов - PullRequest
0 голосов
/ 29 октября 2018

Я пытаюсь объединить набор CSV-файлов в один Dataframe. В процессе я создаю новый столбец с именем Time_Created , который я пытаюсь использовать в качестве первого столбца кадра данных.

df_v1 = pd.concat([pd.read_csv(f) for f in updatedfiles_1], sort=True)
cols = df_v1.columns.tolist()
print(cols) 
cols.insert(0, cols.pop(cols.index('Time_Created')))
print(cols) <-- This shows the columns as expected
df_v1.to_csv('file.csv')

Я вижу, что при печати столбцов перед сохранением в CSV столбцы изменяются по мере необходимости, но когда я открываю сохраненный CSV, сортировка столбцов изменяется.

Ниже приведена последовательность столбцов в источнике:

Name,Price,Quanity,Time_Created

Последовательность, в которую я пытаюсь разобраться:

Time_Created,Name,Price,Quanity

Может кто-нибудь подсказать мне, почему выходной файл меняет сортировку столбцов. Спасибо.

Ответы [ 2 ]

0 голосов
/ 29 октября 2018

Я верю, что вы близко. На самом деле вы никогда не устанавливаете столбцы данных в измененном порядке. Вы можете сделать что-то вроде этого, и это должно работать.

df_v1 = pd.concat([pd.read_csv(f) for f in updatedfiles_1], 
                  sort=True)
cols = df_v1.columns.tolist()
print(cols) 
cols.insert(0, cols.pop(cols.index('Time_Created')))
print(cols) <-- This shows the columns as expected
df_v1[cols].to_csv('file.csv')  <-Here you tell it to send df_v1 in [cols] order

Если последний print(cols) - это нужный вам порядок, вы можете просто использовать его при отправке df_v1 to_csv.

0 голосов
/ 29 октября 2018

Попробуйте использовать df_v1[['Time_Created', 'Name', 'Price', 'Quanity']].to_csv(...)

...