重命名DataFrame的index
重命名DataFrame的index
引入相关库
import numpy as np
import pandas as pd
from pandas import Series,DataFrame
DataFrame的index的重命名
创建一个3*3的DataFrame
df1=DataFrame(np.arange(9).reshape(3,3),index=['BJ','SH','GZ'],columns=['A','B','C'])
df1
A B C
BJ 0 1 2
SH 3 4 5
GZ 6 7 8
查看index
df1.index
Index(['BJ', 'SH', 'GZ'], dtype='object')
重新给index赋值
df1.index=Series(['bj','sh','gz'])
df1
A B C
bj 0 1 2
sh 3 4 5
gz 6 7 8
通过map方法更改index的值,传入str.upper把index变成大写的(注意:产生一个新的index而已,df1的index没有发生改变
df1.index.map(str.upper)
df1
A B C
bj 0 1 2
sh 3 4 5
gz 6 7 8
通过对index进行赋值,改变df1的index
df1.index=df1.index.map(str.upper)
df1
A B C
BJ 0 1 2
SH 3 4 5
GZ 6 7 8
通过rename对index进行修改,产生一个新的DataFrame,df1并没有发生改变
df1.rename(index=str.lower,columns=str.lower)
a b c
bj 0 1 2
sh 3 4 5
gz 6 7 8
df1
A B C
BJ 0 1 2
SH 3 4 5
GZ 6 7 8
还可以对rename传入一个字典,通过字典对特定的index或column进行更改
df1.rename(index={'BJ':'beijing'},columns={"A":'a'})
a B C
beijing 0 1 2
SH 3 4 5
GZ 6 7 8
map的回顾
list1=[1,2,3,4]
list2=['1','2','3','4']
把list1转换为list2的两种方法:
列表解析
[str(x) for x in list1]
['1', '2', '3', '4']
通过map函数,对list1里面每个函数都运行一次str,返回一个map对象,通过list转为一个list
map(str,list1)
<map at 0x24ce44fdac8>
list(map(str,list1))
['1', '2', '3', '4']
在rename里面传入自建函数
def test_map(x):
return x+'_ABC'
上成一个新的index为原始的每个index加上’_ABC’
df1.index.map(test_map)
Index(['BJ_ABC', 'SH_ABC', 'GZ_ABC'], dtype='object')
生成新的DataFrame把每个index的值变为原始index加上’_ABC’
df1.rename(index=test_map)
A B C
BJ_ABC 0 1 2
SH_ABC 3 4 5
GZ_ABC 6 7 8