如何重命名索引字符串?

时间:2017-04-24 08:48:04

标签: python pandas

我期待将指数名称'Juan Gonzalez'重命名为'Jason','Jorge Sanchez'重命名为'George',将'Miguel Sanz'重命名为'Michael'

                              age     height(cm)  weight(kg)
 People
 Juan Gonzalez                  22     181        60
 Jorge Sanchez                  34     190        84
 Miguel Sanz                    50     166        59  

我认为它在重命名列时有效:

df.rename(columns={,,}, inplace=True)

然而,当我尝试

df.rename(index={'Juan Gonzalez':'Jason','Jorge Sanchez':'George','Miguel Sanz':'Michael'}, inplace=True)

它不起作用,它返回具有相同索引名称的相同数据帧

1 个答案:

答案 0 :(得分:2)

索引值似乎有一些空格。

要删除它,请使用strip

df.index = df.index.str.strip()

或者将参数skipinitialspace=True添加到read_csv

样品:

import pandas as pd
from pandas.compat import StringIO

temp=u"""People,age height(cm),weight(kg)

 Juan Gonzalez,22,181,60
 Jorge Sanchez,34,190,84
Miguel Sanz,50,166,59"""
#after testing replace 'StringIO(temp)' to 'filename.csv'
df = pd.read_csv(StringIO(temp), skipinitialspace=True)
print (df)
               People  age height(cm)  weight(kg)
Juan Gonzalez      22             181          60
Jorge Sanchez      34             190          84
Miguel Sanz        50             166          59

print (df.index)
Index(['Juan Gonzalez', 'Jorge Sanchez', 'Miguel Sanz'], dtype='object')

d = {'Juan Gonzalez':'Jason','Jorge Sanchez':'George','Miguel Sanz':'Michael'}
df.rename(index=d, inplace=True)
print (df)
         People  age height(cm)  weight(kg)
Jason        22             181          60
George       34             190          84
Michael      50             166          59
import pandas as pd
from pandas.compat import StringIO

temp=u"""People,age height(cm),weight(kg)

 Juan Gonzalez,22,181,60
 Jorge Sanchez,34,190,84
Miguel Sanz,50,166,59"""
#after testing replace 'StringIO(temp)' to 'filename.csv'
df = pd.read_csv(StringIO(temp))
print (df)
                People  age height(cm)  weight(kg)
 Juan Gonzalez      22             181          60
 Jorge Sanchez      34             190          84
Miguel Sanz         50             166          59

print (df.index)
Index([' Juan Gonzalez', ' Jorge Sanchez', 'Miguel Sanz'], dtype='object')

df.index = df.index.str.strip()

print (df.index)
Index(['Juan Gonzalez', 'Jorge Sanchez', 'Miguel Sanz'], dtype='object')

d = {'Juan Gonzalez':'Jason','Jorge Sanchez':'George','Miguel Sanz':'Michael'}
df.rename(index=d, inplace=True)
print (df)
         People  age height(cm)  weight(kg)
Jason        22             181          60
George       34             190          84
Michael      50             166          59