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

时间:2020-08-07 06:09:15

标签: python pandas

我有一个如下所示的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')

2 个答案:

答案 0 :(得分:1)

您可以将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

答案 1 :(得分:0)

如果Sally,Brian等是索引名,则熊猫具有内置的功能来重命名列和行名

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

您可以使用任何列表来指定方法以编程方式为行创建新名称。

@maow建议您可以使用以下内容。

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