如何在Pandas中重命名列——详细教程

514 阅读2分钟

问题的提出

如何改变列名以取代原来的列名?

下面是一个使用以下DataFrame的例子。

   Col_A  Col_B  Col_C
0      1      3      5
1      2      4      6

你想把列名['Col_A', 'Col_B', 'Col_C'] 改为['a', 'b', 'c'] ,这样得到的DataFrame就是。

   a  b  c
0  1  3  5
1  2  4  6

方法1:改变DataFrame.columns属性

给出一个字符串的列表,这些字符串是新的列名。要改变一个给定的DataFrame的原始列名,使用df.columns = <new column names> ,将新的列名分配给属性 df.columns

下面是你如何解决上面给出的例子。

>>> df.columns = ['a', 'b', 'c']
>>> df
   a  b  c
0  1  3  5
1  2  4  6

为了便于复制和粘贴,这里是改变现有DataFrame的列名的完整源代码。

import pandas as pd

df = pd.DataFrame({'Col_A': [1, 2],
                   'Col_B': [3, 4],
                   'Col_C': [5, 6]})
print(df)
'''
   Col_A  Col_B  Col_C
0      1      3      5
1      2      4      6
'''

df.columns = ['a', 'b', 'c']
print(df)
'''
   a  b  c
0  1  3  5
1  2  4  6
'''

方法2:用DataFrame.rename()重命名特定属性

要重命名一个特定的列名子集{'old_1': 'new_1', 'old_2': 'new_2', ...} ,使用DataFrame.rename() 方法,并将一个带有{old : new} 映射的字典 传入该方法。

  • **df.rename(columns = {'old_1': 'new_1', 'old_2': 'new_2', ...}, inplace=True)**替换原来的DataFrame,或者
  • **df = df.rename(columns = {'old_1': 'new_1', 'old_2': 'new_2', ...})**创建一个新的DataFrame并将结果分配给原来的变量df

这里有一个实际的例子。

import pandas as pd

df = pd.DataFrame({'Col_A': [1, 2],
                   'Col_B': [3, 4],
                   'Col_C': [5, 6]})
print(df)
'''
   Col_A  Col_B  Col_C
0      1      3      5
1      2      4      6
'''

df.rename(columns = {'Col_A': 'a', 'Col_C': 'c'}, inplace=True)
print(df)
'''
   a  Col_B  c
0  1      3  5
1  2      4  6
'''

注意,rename() 方法也可以接受一个函数,按照函数的指定,以编程方式改变列名。

import pandas as pd

df = pd.DataFrame({'Col_A': [1, 2],
                   'Col_B': [3, 4],
                   'Col_C': [5, 6]})
print(df)
'''
   Col_A  Col_B  Col_C
0      1      3      5
1      2      4      6
'''

df = df.rename(columns = lambda x: x[-1].lower())
print(df)
'''
   a  b  c
0  1  3  5
1  2  4  6
'''

如果你需要复习一下lambda函数,请随时查看以下文章。

相关教程。 Python Lambda函数

方法3:使用DataFrame.set_axis()重新分配列头

使用 df[.](https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.set_axis.html)set_axis(new_col_names, axis=1, inplace=True)来改变原始DataFrame的标题。如果你不想覆盖原始DataFrame,使用inplace=False ,在这种情况下,该方法将返回一个带有替换标题的新DataFrame副本。

import pandas as pd

df = pd.DataFrame({'Col_A': [1, 2],
                   'Col_B': [3, 4],
                   'Col_C': [5, 6]})
print(df)
'''
   Col_A  Col_B  Col_C
0      1      3      5
1      2      4      6
'''

df.set_axis(['a', 'b', 'c'], axis=1, inplace=True)
print(df)
'''
   a  b  c
0  1  3  5
1  2  4  6
'''

摘要

在一个给定的Pandas DataFrame中,有三种主要的方法来重命名列名['Col_A', 'Col_B', 'Col_C'] ,其中有['a', 'b', 'c']

  1. df.columns = ['a', 'b', 'c']
  2. df.rename(columns = {'Col_A': 'a', 'Col_C': 'c'}, inplace=True)
  3. df.set_axis(['a', 'b', 'c'], axis=1, inplace=True)

只有第二种方法适合部分替换列名。

The postHow to Rename Column Names in Pandas?first appeared onFinxter.