我们要对Series和DataFrame的列标签进行修改,通常是使用rename
函数,还有一种方法就是使用暴力修改法,下面分别针对两种方法进行代码演示以及进行说明。
首先我们先载入pandas
库并且生成一个Series以及一个DataFrame,用于后面测试时用到。
>>> import pandas as pd
>>> import numpy as np
>>> ser = pd.Series(list('kanny'))
>>> ser
0 k
1 a
2 n
3 n
4 y
dtype: object
>>> df = pd.DataFrame(np.arange(12).reshape(3,4),
columns=['A', 'B', 'C', 'D'])
>>> df
A B C D
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
1. 暴力修改法
暴力修改法这里直接为修改我们Series与DataFrame的名称。
1) Series
首先查看Series的名称:
>>> ser.name
会发现什么都运行不出来,因为默认的name
为空,所以我们可以直接对其赋值即可修改其名称。
>>> ser.name = 'kanny'
>>> ser
0 k
1 a
2 n
3 n
4 y
Name: kanny, dtype: object
>>> ser.name
'kanny'
类似的我们同样可以对DataFrame的列进行赋值,但是赋值时必须向量长度与列数一致,不然会报错。
2) DataFrame
这里我们就不能使用name
了,在DataFrame里面需要使用columns
,我们先输出结果看看是长什么样的。
>>> df.columns
Index(['A', 'B', 'C', 'D'], dtype='object')
然后类似进行修改:
>>> df.columns = ['a', 'b', 'C', 'D']
>>> df
a b C D
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
注意,我们使用list(df)
也会输出列名,但如果使用list(df) = ['a', 'b', 'C', 'D']
则会报错。并且需要注意的是,我们不能针对指定的列进行修改,要修改就只能全部进行修改了。
如果需要针对指定的列进行修改,就需要用到我们的rename
函数了。
2. rename修改法
首先介绍Series的rename修改法。
1) Series
如下所示,即可对Series的标签进行修改。
>>> ser.rename("Kanny", inplace = True)
>>> ser
0 k
1 a
2 n
3 n
4 y
Name: Kanny, dtype: object
对DataFrame的列标签修改也是类似。
2) DataFrame
使用如下的方法即可进行修改。
>>> df.rename(columns={'A':'a', 'B':'b', 'C':'C', 'D':'D'}, inplace = True)
>>> df
a b C D
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11
但我们注意到,其实我们只是修改前面两个字母,所以这里我们也不需要写将A、B、C、D
四个列名全部写进去,只用写前面两个就可以了。
>>> df.rename(columns={'A':'a', 'B':'b'}, inplace = True)
>>> df
a b C D
0 0 1 2 3
1 4 5 6 7
2 8 9 10 11