Pandas 如何重命名单个DataFrame列,而不知道列名
在数据分析中,经常需要根据某些条件修改DataFrame中的列名。但如果我们所面对的数据集很大,就比较难以记住每个列的名称,这时候就需要用到Pandas中的方法重命名单个DataFrame列。
阅读更多:Pandas 教程
重命名单个DataFrame列
假设我们有以下数据集
| Name | Age | Sex | |
|---|---|---|---|
| 0 | Tom | 20 | M |
| 1 | Ann | 25 | F |
| 2 | Peter | 30 | M |
如何将列名”Name”更改为”Full Name”,而不需要先知道该列名?我们可以使用Pandas中的rename()方法来实现。
# 引入 Pandas 模块
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({'Name':['Tom', 'Ann', 'Peter'], 'Age':[20, 25, 30], 'Sex':['M', 'F', 'M']})
# 查看数据
print(df)
# 重命名一个列
df = df.rename(columns=lambda x: 'Full Name' if x=='Name' else x)
# 查看重命名后的数据
print(df)
输出:
Name Age Sex
0 Tom 20 M
1 Ann 25 F
2 Peter 30 M
Full Name Age Sex
0 Tom 20 M
1 Ann 25 F
2 Peter 30 M
在示例中,我们使用Pandas中的rename()方法来重命名单个DataFrame列。在该方法中,我们使用了一个lambda表达式来判断当前需要重命名的列名是否为”Name”,如果是,则重命名为”Full Name”。
怎样批量重命名DataFrame列
如果我们需要重命名多个列,那么使用上述方法可能就比较麻烦了。幸运的是,Pandas中也提供了批量重命名DataFrame列的方法。
假设我们有以下数据集
| Name | Age | Gender | |
|---|---|---|---|
| 0 | Tom | 20 | M |
| 1 | Ann | 25 | F |
| 2 | Peter | 30 | M |
我们想要将上表中的所有列名修改为”full_name”,”age”和”gender”,可以使用rename()方法和字典的形式来批量重命名列名。
# 引入Pandas模块
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({'Name':['Tom', 'Ann', 'Peter'], 'Age':[20, 25, 30], 'Gender':['M', 'F', 'M']})
# 查看数据
print(df)
# 批量重命名列名
df.rename(columns={'Name':'full_name', 'Age':'age', 'Gender':'gender'}, inplace=True)
# 查看重命名后的数据
print(df)
输出:
Name Age Gender
0 Tom 20 M
1 Ann 25 F
2 Peter 30 M
full_name age gender
0 Tom 20 M
1 Ann 25 F
2 Peter 30 M
输出后我们发现DataFrame的列名已经被更改为我们想要的列名。
除了使用字典的形式,我们还可以使用列表的形式来批量重命名列名。
# 引入Pandas模块
import pandas as pd
# 创建一个 DataFrame
df = pd.DataFrame({'Name':['Tom', 'Ann', 'Peter'], 'Age':[20, 25, 30], 'Gender':['M', 'F', 'M']})
# 查看数据
print(df)
# 批量重命名列名
df.columns = ['full_name', 'age', 'gender']
# 查看重命名后的数据
print(df)
输出:
full_name age gender
0 Tom 20 M
1 Ann 25 F
2 Peter 30 M
总结
在数据分析中,我们有时需要修改DataFrame中的列名。Pandas中提供了rename()方法,使得我们可以快速地重命名单个DataFrame列。如果需要批量重命名DataFrame列,可以使用字典或列表的形式来实现。
极客教程