Установить два столбца в качестве индекса кортежа в Pandas - PullRequest
0 голосов
/ 24 января 2019

Предположим, у меня есть кадр данных pandas со столбцами 0, 1 и 'Future Connections'.Как установить столбцы 0 и 1 в качестве одного индекса кортежа:

Например, этот кадр данных:

0   1        Future Connection
6   840      0.0
4   197      1.0
620 979      0.0

приведет к:

0           Future Connection
(6, 840)    0.0
(4, 197)    1.0
(620, 979)  0.0

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Как установить столбцы 0 и 1 как один индекс кортежа:

«Индекс кортежа» как понятие не существует в Пандах. Вы можете иметь индекс object dtype, содержащий кортежи, но это не рекомендуется. Лучший вариант - использовать MultiIndex, который эффективно хранит базовые значения через массивы NumPy. Действительно, Панды облегчают это с set_index:

df = df.set_index([0, 1])

print(df)
#          Future Connection
# 0   1                     
# 6   840                0.0
# 4   197                1.0
# 620 979                0.0

print(df.index)
# MultiIndex(levels=[[4, 6, 620], [197, 840, 979]],
#            labels=[[1, 0, 2], [1, 0, 2]],
#            names=[0, 1])

print(df.index.values)
# [(6, 840) (4, 197) (620, 979)]
0 голосов
/ 24 января 2019

Используйте понимание списка с DataFrame.pop для столбца извлечения 0, 1:

print (df.columns)
Index([0, 1, 'Future Connection'], dtype='object')

df.index = [x for x in zip(df.pop(0), df.pop(1))]
print (df)
            Future Connection
(6, 840)                  0.0
(4, 197)                  1.0
(620, 979)                0.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...