Не удается переупорядочить данные столбцов - PullRequest
2 голосов
/ 08 апреля 2019

У меня есть датафрейм, а не последовательности.если я использую len(df.columns), мои данные имеют 3586 столбцов.Как переупорядочить последовательности данных?

ID  V1  V10 V100 V1000 V1001 V1002 ...  V990 V991 V992 V993 V994
A   1   9.0 2.9  0.0   0.0   0.0   0.0  0.0  0.0  0.0  0.0  0.0
B   1   1.2 0.1  3.0   0.0   0.0   0.0  1.0  0.0  0.0  0.0  0.0
C   2   8.6 8.0  2.0   0.0   0.0   0.0  2.0  0.0  0.0  0.0  0.0
D   3   0.0 2.0  0.0   0.0   0.0   0.0  3.0  0.0  0.0  0.0  0.0
E   4   7.8 6.6  3.0   0.0   0.0   0.0  4.0  0.0  0.0  0.0  0.0

Я использовал это df = df.reindex(sorted(df.columns), axis=1) (основываясь на этом вопросе Переупорядочение столбцов в кадре данных pandas на основе имени столбца ), но все еще нетза работой.

спасибо

1 Ответ

3 голосов
/ 08 апреля 2019

Сначала получите все столбцы без шаблона V + number, отфильтровав их с помощью str.contains, затем отсортировав все остальные значения по Index.difference, сложите их и передайте вDataFrame.reindex - получить сначала все нечисловые несоответствующие столбцы в первых позициях, а затем отсортировать V + number столбцы:

L1 = df.columns[~df.columns.str.contains('^V\d+$')].tolist()

L2 = sorted(df.columns.difference(L1), key=lambda x: float(x[1:]))

df = df.reindex(L1 + L2, axis=1)
print (df)
   ID   V1  V10  V100  V990  V991  V992  V993  V994  V1000  V1001  V1002
A   1  9.0  2.9   0.0   0.0   0.0   0.0   0.0   0.0    0.0    0.0    0.0
B   1  1.2  0.1   3.0   1.0   0.0   0.0   0.0   0.0    0.0    0.0    0.0
C   2  8.6  8.0   2.0   2.0   0.0   0.0   0.0   0.0    0.0    0.0    0.0
D   3  0.0  2.0   0.0   3.0   0.0   0.0   0.0   0.0    0.0    0.0    0.0
E   4  7.8  6.6   3.0   4.0   0.0   0.0   0.0   0.0    0.0    0.0    0.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...