在pandas数据框中重命名X列?X可变

4 投票
1 回答
3984 浏览
提问于 2025-04-18 09:37

我有一个数据表,这个数据表里的变量数量会变化,从1个到20个都有,而且所有的变量名字都是1、2、3、4、5……这样。

有一天,数据表里有四列:

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

而另一天,可能只有两列:

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

我想要的效果:

在每个列名之前加上“variable_”(不管列的数量是多少)。这样看起来就像这样:

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

我可以用一个循环来实现这个,但我希望能有更简单的方法。

1 个回答

11

df.rename 这个函数可以接收一个用来修改列名的函数,所以你可以像这样做。

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

撰写回答