如何重命名Pandas数据框架中的列
给定一个Pandas DataFrame,让我们通过实例看看如何在Pandas中重命名列。在这里,我们将讨论在pandas DataFrame中重命名列名的6种不同方法。
关于Pandas DataFrame:
Pandas DataFrame是一个用于存储数据的矩形网格。当存储在dataFrame中时,很容易实现数据的可视化和工作化。
- 它由行和列组成。
- 每一行都是对某个实例的测量,而列是一个向量,包含一些特定属性/变量的数据。
- 每个数据框架列在任何特定的列中都有同质的数据,但数据框架行在任何特定的行中都可以包含同质或异质的数据。
- 与二维数组不同,pandas的Dataframe轴是有标签的。
如何重命名Pandas数据框架中的列
方法1:使用rename()函数
重命名Pandas Dataframe中的列的一种方法是使用rename()函数。当我们需要重命名一些选定的列时,这个方法非常有用,因为我们只需要为要重命名的列指定信息。
例子1:重命名一个的单列。
# Import pandas package
import pandas as pd
# Define a dictionary containing ICC rankings
rankings = {'test': ['India', 'South Africa', 'England',
'New Zealand', 'Australia'],
'odi': ['England', 'India', 'New Zealand',
'South Africa', 'Pakistan'],
't20': ['Pakistan', 'India', 'Australia',
'England', 'New Zealand']}
# Convert the dictionary into DataFrame
rankings_pd = pd.DataFrame(rankings)
# Before renaming the columns
print(rankings_pd)
rankings_pd.rename(columns = {'test':'TEST'}, inplace = True)
# After renaming the columns
print("\nAfter modifying first column:\n", rankings_pd.columns)
输出:
例子2:重命名多列。
# Import pandas package
import pandas as pd
# Define a dictionary containing ICC rankings
rankings = {'test': ['India', 'South Africa', 'England',
'New Zealand', 'Australia'],
'odi': ['England', 'India', 'New Zealand',
'South Africa', 'Pakistan'],
't20': ['Pakistan', 'India', 'Australia',
'England', 'New Zealand']}
# Convert the dictionary into DataFrame
rankings_pd = pd.DataFrame(rankings)
# Before renaming the columns
print(rankings_pd.columns)
rankings_pd.rename(columns = {'test':'TEST', 'odi':'ODI',
't20':'T20'}, inplace = True)
# After renaming the columns
print(rankings_pd.columns)
输出:
方法2:通过指定一个新的列名列表
也可以通过直接将一个包含新名称的列表分配给我们想要重命名的数据框架对象的列属性来重命名这些列。这种方法的缺点是,我们需要为所有的列提供新的名称,即使只想重命名一些列。
# Import pandas package
import pandas as pd
# Define a dictionary containing ICC rankings
rankings = {'test': ['India', 'South Africa', 'England',
'New Zealand', 'Australia'],
'odi': ['England', 'India', 'New Zealand',
'South Africa', 'Pakistan'],
't20': ['Pakistan', 'India', 'Australia',
'England', 'New Zealand']}
# Convert the dictionary into DataFrame
rankings_pd = pd.DataFrame(rankings)
# Before renaming the columns
print(rankings_pd.columns)
rankings_pd.columns = ['TEST', 'ODI', 'T-20']
# After renaming the columns
print(rankings_pd.columns)
输出:
方法3:使用DataFrame set_axis()函数重命名列名
在这个例子中,我们将使用set_axis函数重命名列名,我们将把新的列名和应该被替换成新的列名的轴作为参数传递。
# Import pandas package
import pandas as pd
# Define a dictionary containing ICC rankings
rankings = {'test': ['India', 'South Africa', 'England',
'New Zealand', 'Australia'],
'odi': ['England', 'India', 'New Zealand',
'South Africa', 'Pakistan'],
't20': ['Pakistan', 'India', 'Australia',
'England', 'New Zealand']}
# Convert the dictionary into DataFrame
rankings_pd = pd.DataFrame(rankings)
# Before renaming the columns
print(rankings_pd.columns)
rankings_pd.set_axis(['A', 'B', 'C'], axis='columns', inplace=True)
# After renaming the columns
print(rankings_pd.columns)
rankings_pd.head()
输出:
方法4:使用DataFrame add_prefix()和add_suffix()函数重命名列名
在这个例子中,我们将使用add_Sufix和add_Prefix函数来重命名列名,我们将传递应该添加到列名的第一个和最后一个名字中的前缀和后缀。
# Import pandas package
import pandas as pd
# Define a dictionary containing ICC rankings
rankings = {'test': ['India', 'South Africa', 'England',
'New Zealand', 'Australia'],
'odi': ['England', 'India', 'New Zealand',
'South Africa', 'Pakistan'],
't20': ['Pakistan', 'India', 'Australia',
'England', 'New Zealand']}
# Convert the dictionary into DataFrame
rankings_pd = pd.DataFrame(rankings)
# Before renaming the columns
print(rankings_pd.columns)
rankings_pd = rankings_pd.add_prefix('col_')
rankings_pd = rankings_pd.add_suffix('_1')
# After renaming the columns
rankings_pd.head()
输出:
col_test_1 col_odi_1 col_t20_1
0 India England Pakistan
1 South Africa India India
2 England New Zealand Australia
3 New Zealand South Africa England
4 Australia Pakistan New Zealand
方法5:使用Dataframe.columns.str.replace函数替换列名的特定文本
在这个例子中,我们将使用替换函数重命名列名,我们将把旧的名称与新的名称作为列的参数传递。
# Import pandas package
import pandas as pd
# Define a dictionary containing ICC rankings
rankings = {'test': ['India', 'South Africa', 'England',
'New Zealand', 'Australia'],
'odi': ['England', 'India', 'New Zealand',
'South Africa', 'Pakistan'],
't20': ['Pakistan', 'India', 'Australia',
'England', 'New Zealand']}
# Convert the dictionary into DataFrame
rankings_pd = pd.DataFrame(rankings)
# Before renaming the columns
print(rankings_pd.columns)
# df = rankings_pd
rankings_pd.columns = rankings_pd.columns.str.replace('test', 'Col_TEST')
rankings_pd.columns = rankings_pd.columns.str.replace('odi', 'Col_ODI')
rankings_pd.columns = rankings_pd.columns.str.replace('t20', 'Col_T20')
rankings_pd.head()
输出: