#python #pandas #numpy #nan #reindex
Вопрос:
В рамках задания я пытаюсь реорганизовать столбцы таким образом, чтобы типы (кофе) располагались в алфавитном порядке. Я реализовал следующий код, и он действительно работает:
#Rearrange the names of the Coffees so they are in alphabetical order
Reorganized = ["Channel", "Region", "Arabica", "Cappuccino", "Espresso", "Latte", "Lungo"]
BeanFileCleaned = BeanFileCleaned.reindex(columns=Reorganized)
BeanFileCleaned
Однако, когда я снова запускаю файл, все значения в таблице становятся Nan, и по какой-то причине строки также имеют то же имя, что и столбцы (строк много, так что этого не должно произойти).
Как мне это исправить? Любая помощь приветствуется, заранее спасибо.
Редактировать: Забыл добавить, вот как выглядит результат:
Комментарии:
1.
newDF = BeanFileCleaned [Reorganized]
?2. Это означало бы, что это не те заголовки столбцов, которые у вас есть. Из чего получается результат
print(BeanFileCleaned.columns)
?3. @JoranBeasley Я сделал это, я получил тот же результат
4. @HenryEcker Вывод от использования этого просто приводит к именам столбцов. Он больше ничего не делает
5. Верно. Но переиндексирование столбцов, возвращающих nan, означает, что у вас нет этих столбцов для начала. Вы не можете изменить порядок столбцов, которые не существуют. Поэтому я спросил, какие у вас колонки, прежде чем вы попытаетесь переиндексировать…
Ответ №1:
Предполагая, что BeanFileCleaned-это фрейм данных pandas, вы, вероятно, ищете что-то подобное.
#Rearrange the names of the Coffees so they are in alphabetical order
Reorganized = ["Channel", "Region", "Arabica", "Cappuccino", "Espresso", "Latte", "Lungo"]
Reorganized = sorted(Reogranized)
BeanFileCleaned = BeanFileCleaned[Reorganized]
Если у вас есть дополнительные столбцы, которые вы хотите добавить в конец, вы можете сделать это следующим образом
all_columns = BeanFileCleaned.columns
#Rearrange the names of the Coffees so they are in alphabetical order
Reorganized = ["Channel", "Region", "Arabica", "Cappuccino", "Espresso", "Latte", "Lungo"]
Reorganized = sorted(Reogranized)
Reorganized_set = set(Reorganized)
rest_columns = [column for column in all_columns if column not in Reorganized_set]
BeanFileCleaned = BeanFileCleaned[Reorganized rest_columns]
Комментарии:
1. Мне пришлось кое-что отредактировать с моей стороны, но ваше предложение сработало . Для любого в будущем мой окончательный рабочий код был следующим:
#Rearrange the names of the Coffees so they are in alphabetical order AlphabeticalOrder = ["Channel", "Region", "Arabica", "Cappuccino", "Espresso", "Latte", "Lungo"] BeanFileCleaned = BeanFileCleaned.reindex(columns=AlphabeticalOrder) BeanFileCleaned = BeanFileCleaned[AlphabeticalOrder]