изменить имя индекса в Python - PullRequest
0 голосов
/ 24 января 2019

Я хотел бы сбросить имя индексов в DataFrame в python на то же имя с первым пропущенным числом.

Например, если мой DataFrame:

                 Sample 1                Sample 2
    2706   retinopathy positive        retinopathy negative
    2707   retinopathy negative        retinopathy negative
    2708   retinopathy positive        retinopathy positive

Я хочу, чтобы он стал:

                Sample 1                 Sample 2
     706   retinopathy positive        retinopathy negative
     707   retinopathy negative        retinopathy negative
     708   retinopathy positive        retinopathy positive

Я пытался:

ret_metadata.rename(index={2706: '706'})

Однако я хотел бы изменить имя индекса для многих различных строк, возможно, в цикле.Кто-нибудь знает, как я мог это сделать?

Большое вам спасибо!

Ответы [ 2 ]

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

Если вы предпочитаете математическое решение (без преобразования в строку), вы можете сделать что-то вроде этого:

import math
# ...
df.index = df.index % (pow(10, int(math.log(df.index, 10))))

... когда вы всегда хотите удалить первую цифру.

Если вы хотите удалить все, кроме трех последних цифр, это станет намного проще:

df.index = df.index % 1000
0 голосов
/ 24 января 2019

Вы можете использовать строковые операции, как в этом ответе , приведя его к строке, разделив его и приведя обратно к int.

df

        Sample_1                Sample_2
2706    retinopathy_positive    retinopathy_negative
2707    retinopathy_negative    retinopathy_negative
2708    retinopathy_positive    retinopathy_positive

(Вы можете пропустить второе приведение, если вас не волнует числовой индекс)

df.index=df.index.astype(str).str[1:].astype(int)

df

    Sample_1                Sample_2
706 retinopathy_positive    retinopathy_negative
707 retinopathy_negative    retinopathy_negative
708 retinopathy_positive    retinopathy_positive

df.index

Int64Index([706, 707, 708], dtype='int64')
...