Переименовать столбцы X в кадре данных pandas? Где X варьируется

У меня есть кадр данных, в котором (из-за чего-то вне моего контроля) количество переменных варьируется от 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

И еще день есть 2 столбца:

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

Я мог бы сделать это с помощью цикла, но я надеялся, что есть более простой способ.


person Anton    schedule 13.06.2014    source источник


Ответы (1)


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
person chrisb    schedule 13.06.2014