Сохранить порядок значений в двоичной матрице в Python

1

Я создал двоичную матрицу из двух столбцов pandas

ДФ:

ID_2  ID_1
1111  1
22222 2
33333 3
33333 4
44444 5
55555 6
55555 7
66666 8
66666 9
77777 10
77777 11
77777 12

С помощью:

A = pd.get_dummies(df.set_index('ID_1')['ID_2'].astype(str)).max(level=0)
print (A)

Это создает матрицу:

      22222 33333 44444 55555 66666 77777 11111
ID_2
1     0     0     0     0     0     0     1
2     1     0     0     0     0     0     0
3     0     1     0     0     0     0     0
4     0     1     0     0     0     0     0
5     0     0     1     0     0     0     0

....

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

Теги:
pandas
matrix

1 ответ

1
Лучший ответ

Если вы хотите изменить порядок столбцов, я думаю, вам нужно это:

A = A.reindex_axis(['11111'] + list(A.columns[:-1]), axis=1)

редактировать

Вы можете сделать так:

 from collections import OrderedDict
 cols = list(OrderedDict.fromkeys(list(df['ID_2'].values)))
 cols = [str(i) for i in cols]
 A = A.reindex_axis(cols, axis=1)

здесь вы сохраняете элемент столбца упорядоченным способом (и без дубликатов), а затем используете их как заголовок

  • 0
    Это было бы хорошим решением, но когда речь идет о наличии нескольких наборов данных, было бы хорошо, если бы существовало подобное, которое автоматизировало бы переупорядочение. Или форсируйте порядок с самого начала.
  • 0
    @C_psy Я отредактировал ответ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню