#python #pandas
#python #панды
Вопрос:
У меня есть фрейм данных размером (2,3 м x 33). Как я всегда делаю при выборе столбцов для сохранения, я использую
colsToKeep = ['A','B','C','D','E','F','G','H','I']
df = df[colsToKeep]
Однако на этот раз данные в этих столбцах полностью перемешиваются при запуске кода. Записи для строки A могут быть, например, в строке D. Совершенно случайно.
Кто-нибудь сталкивался с подобным поведением раньше? В данных нет ничего необычного, и df полностью исправен перед запуском этих строк. Запуск кода до возникновения проблемы:
with open('file.dat','r') as f:
df = pd.DataFrame(l.rstrip().split() for l in f)
#rename columns with the first row
df.columns = df.iloc[0]
#drop first row which is now duplicated
df = df.iloc[1:]
#. 33 nan columns - Remove all the nan columns that appeared
df = df.loc[:,df.columns.notnull()]
colsToKeep = ['A','B','C','D','E','F','G','H','I']
df = df[colsToKeep]
Данные внезапно перестают быть хорошо отформатированными, такими как:
A B C D E F G H I
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
к чему-то более случайному, например:
A B C D E F G H I
7 9 3 4 5 1 2 8 6
3 2 9 2 1 6 7 8 4
2 1 3 6 5 4 7 9 8
Комментарии:
1. Можете ли вы предоставить минимальный, воспроизводимый пример или хотя бы образец ваших входных и выходных DF-файлов?
2. Вы можете использовать
df.reindex(colsToKeep, axis=1)
, чтобы вернуть этот порядок в любое время.3. @ScottBoston Спасибо за предложение, но, похоже, это не сработало, что заставляет меня думать, возможно, это проблема с наименованием столбца.
4. @scnerd Я хотел бы предоставить воспроизводимые примеры, но я совершенно не уверен, что вызывает проблему с этим! Однако я дал более подробное описание.
5. Что это за версия python?