Панды, перемешивающие данные после выбора столбцов

#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?