关于python:在pandas数据框中重命名X列?

Rename X columns in a pandas dataframe? Where X varies

本问题已经有最佳答案,请猛点这里访问。

我有一个数据框架,其中(由于我控制之外的原因)变量的数量从1到20不等,所有变量都被命名为1、2、3、4、5…。等

一天有四列:

1
2
3
4
5
6
data = {'1': ['A', 'B', 'C', 'D', 'E'],
        '2': [1, 0, 1, 0, 1],
        '3': [1, 1, 0, 0, 3],
        '4': [0, 0, 1, 1, 1]}
df = pd.DataFrame(data)
df

另一天有两列:

1
2
3
4
data = {'1': ['A', 'B', 'C', 'D', 'E'],
        '2': [1, 0, 1, 0, 1]}
df = pd.DataFrame(data)
df

我想要什么:

在每个列名称前面加上"变量"(不考虑列数)。所以看起来是这样的:

1
2
3
4
5
6
data = {'variable_1': ['A', 'B', 'C', 'D', 'E'],
        'variable_2': [1, 0, 1, 0, 1],
        'variable_3': [1, 1, 0, 0, 3],
        'variable_4': [0, 0, 1, 1, 1]}
df = pd.DataFrame(data)
df

我可以用一个循环来完成,但我希望有一个更简单的方法。


df.rename可以接受一个修改列名的函数,所以您可以这样做。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
In [171]: data = {'1': ['A', 'B', 'C', 'D', 'E'],
     ...:         '2': [1, 0, 1, 0, 1],
     ...:         '3': [1, 1, 0, 0, 3],
     ...:         '4': [0, 0, 1, 1, 1]}
     ...: df = pd.DataFrame(data)
     ...:

In [172]: df.rename(columns = lambda x : 'variable_' + x)
Out[172]:
  variable_1  variable_2  variable_3  variable_4
0          A           1           1           0
1          B           0           1           0
2          C           1           0           1
3          D           0           0           1
4          E           1           3           1