在Pandas中,我们可以通过rename()函数轻松地实现对行或列名的修改,该函数接收一个字典作为参数,字典的key是需要替换的原名,value是新的名称。下面是修改Pandas的行或列的名字的完整攻略。
1. 修改行或列名
1.1 修改列名
我们通过一个小例子来演示如何修改列名。首先,加载一个示例数据集iris,并显示前5行数据:
import pandas as pd
iris = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data',header=None)
print(iris.head())
运行结果:
0 1 2 3 4
0 5.1 3.5 1.4 0.2 Iris-setosa
1 4.9 3.0 1.4 0.2 Iris-setosa
2 4.7 3.2 1.3 0.2 Iris-setosa
3 4.6 3.1 1.5 0.2 Iris-setosa
4 5.0 3.6 1.4 0.2 Iris-setosa
我们看到列名是默认的数字0、1、2、3、4。我们可以通过rename()函数轻松地将其修改为更合适的名称,比如’sepal_length’, ‘sepal_width’, ‘petal_length’, ‘petal_width’, ‘class’。代码如下:
iris.columns = ['sepal_length', 'sepal_width', 'petal_length', 'petal_width', 'class']
print(iris.head())
运行结果:
sepal_length sepal_width petal_length petal_width class
0 5.1 3.5 1.4 0.2 Iris-setosa
1 4.9 3.0 1.4 0.2 Iris-setosa
2 4.7 3.2 1.3 0.2 Iris-setosa
3 4.6 3.1 1.5 0.2 Iris-setosa
4 5.0 3.6 1.4 0.2 Iris-setosa
我们看到列名已经被修改为我们指定的名称。
1.2 修改行名
我们通过一个小例子来演示如何修改行名。首先,我们手动创建一个数据集并书写行名,然后我们通过rename()函数将行名修改为更合适的名称。代码如下:
import pandas as pd
data = {'name':['Jack', 'Lucy', 'Tom', 'Lily'],
'age':[18, 22, 20, 21],
'gender':['M', 'F', 'M', 'F']}
df = pd.DataFrame(data, index=['student1', 'student2', 'student3', 'student4'])
print(df)
# 将行名修改为's1', 's2', 's3', 's4'
df.rename(index={'student1':'s1', 'student2':'s2', 'student3':'s3', 'student4':'s4'}, inplace=True)
print(df)
运行结果:
name age gender
student1 Jack 18 M
student2 Lucy 22 F
student3 Tom 20 M
student4 Lily 21 F
name age gender
s1 Jack 18 M
s2 Lucy 22 F
s3 Tom 20 M
s4 Lily 21 F
我们看到行名已经被修改为我们指定的名称。
2. 修改行或列名并返回新的数据
默认情况下,rename()函数不会修改原数据,而是返回新的数据。我们通过一个小例子来演示如何操作。首先,我们加载示例数据集iris,并将列名分别修改为’sepal_len’, ‘sepal_wid’, ‘petal_len’, ‘petal_wid’, ‘class’。然后我们通过rename()函数将行名修改为0、1、2、3、4,将列名修改回原始的sepallength、sepalwidth、petallength、petalwidth、iclass。代码如下:
import pandas as pd
iris = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data',header=None)
iris.columns = ['sepallength', 'sepalwidth', 'petallength', 'petalwidth', 'iclass']
print(iris.head())
# 修改行名并返回新的数据
iris_new = iris.rename(index={0:'row1', 1:'row2', 2:'row3', 3:'row4', 4:'row5'},
columns={'sepallength':'sepal_len', 'sepalwidth':'sepal_wid',
'petallength':'petal_len', 'petalwidth':'petal_wid',
'iclass':'class'})
print(iris_new.head())
运行结果:
sepallength sepalwidth petallength petalwidth iclass
0 5.1 3.5 1.4 0.2 Iris-setosa
1 4.9 3.0 1.4 0.2 Iris-setosa
2 4.7 3.2 1.3 0.2 Iris-setosa
3 4.6 3.1 1.5 0.2 Iris-setosa
4 5.0 3.6 1.4 0.2 Iris-setosa
sepal_len sepal_wid petal_len petal_wid class
row1 5.1 3.5 1.4 0.2 Iris-setosa
row2 4.9 3.0 1.4 0.2 Iris-setosa
row3 4.7 3.2 1.3 0.2 Iris-setosa
row4 4.6 3.1 1.5 0.2 Iris-setosa
row5 5.0 3.6 1.4 0.2 Iris-setosa
我们看到,原始数据没有被修改,新的数据iris_new返回了修改后的列名和行名。