Pandas изменить индексное имя элементов в списке - PullRequest
1 голос
/ 07 августа 2020

У меня есть df, который выглядит так:

          2019   2018
Sally    -6461  -6340
Brian     7139   7200
rebecca   1337   1067
mark     10922  11128
toto     12936  13054

и список, указанный как:

listVal = ["Sally","rebecca"]

для строки, которая находится в listVal, я хотел бы изменить имя путем добавления 00. Таким образом, окончательный df будет выглядеть так:

           2019   2018
Sally00   -6461  -6340
Brian      7139   7200
rebecca00  1337   1067
mark      10922  11128
toto      12936  13054

Есть ли один строчный код, который достигает этого без использования для l oop, как показано ниже?

for val in listVal:
   df.index = df.index.str.replace(val, val+'00')

Ответы [ 2 ]

1 голос
/ 07 августа 2020

Вы можете использовать where с isin

df.index = df.index.where(~df.index.isin(listVal), df.index+'00')
df
            2019   2018
Sally00    -6461  -6340
Brian       7139   7200
rebecca00   1337   1067
mark       10922  11128
toto       12936  13054
0 голосов
/ 07 августа 2020

Если Салли, Брайан и др. c. - это имена индексов, тогда pandas имеет встроенную функцию для переименования имен столбцов и строк

df_new = df.rename(index={'Sally': 'Sally00','rebecca':'rebecca00'})

Вы можете использовать любой список, чтобы диктовать методы для программного создания новых имен для строк.

Как предлагает @maow, вы можете использовать следующее.

df.rename(index={val: val+'00' for val in ['Sally', 'rebecca']})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...