更改列表中项目的索引名称

2024-10-06 07:57:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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

是否有一行代码可以实现这一点而不使用下面的for循环

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

Tags: 代码名称df列表forindexvalsally
2条回答

您可以将whereisin一起使用

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

如果Sally、Brian等是索引名,则pandas具有用于重命名列名和行名的内置函数

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

您可以使用任何list-to-dict方法以编程方式为行创建新名称

正如@maow所建议的,您可以使用以下内容

df.rename(index={val: val+'00' for val in ['Sally', 'rebecca']})

相关问题 更多 >