在Pandas中通过索引重命名列

  • Post category:Python

在 Pandas 中,可以通过索引来对数据框的列进行重命名,其一般的语法是``df.rename(columns={old_name1:new_name1,old_name2:new_name2,...}})。具体步骤如下:

  1. 创建一个Pandas数据框并命名其列名:

“`python
import pandas as pd

df = pd.DataFrame({‘A’:[1,2,3],’B’:[4,5,6]})
df.columns = [‘C1′,’C2’]
print(df)
“`

输出:

C1 C2
0 1 4
1 2 5
2 3 6

  1. 使用rename()函数重命名列:

python
df = df.rename(columns={'C1':'New_C1','C2':'New_C2'})
print(df)

输出:

New_C1 New_C2
0 1 4
1 2 5
2 3 6

rename()函数中,使用一个字典对列名进行映射,字典的key为旧列名,value为新列名。

注意:在使用rename()函数时,需要注意参数inplace的设置。当inplace=True时,原数据框中列名将被直接修改,否则将只是返回修改后的数据框,原数据框中列名并未变化。

例如,下面的代码修改列名后,直接在原数据框中进行修改:

df.rename(columns={'C1':'New_C1','C2':'New_C2'}, inplace=True)

在许多情况下,只需要重命名部分列名,可以使用正则表达式来匹配需要重命名的列名。

例如:在网站日志记录中,有许多类似“page_1”、“page_2”的列名,我们可以通过正则表达式'^page_'来选取所有以“page_”开头的列名,并将其统一重命名为“page”。

以下是选取并重命名匹配到的列的例子:

df = pd.DataFrame({'page_1':[1,2,3],'page_2':[4,5,6],'col_1':[7,8,9]})
print(df)

df = df.rename(columns=lambda x: x.replace('page', 'new_page') if x.startswith('page') else x)

print(df)

输出结果为:

   page_1  page_2  col_1
0       1       4      7
1       2       5      8
2       3       6      9

   new_page_1  new_page_2  col_1
0           1           4      7
1           2           5      8
2           3           6      9