Создание нового столбца итеративно путем добавления двух столбцов и удаления оригиналов

#python #pandas

#python #pandas

Вопрос:

У меня есть фрейм данных

 dd = pd.DataFrame({'id':[1,2,3],'col_1':[1,1,1],'col_2':[1,1,1],'col_3':[2,2,2],'col_4':[2,2,2],'dummy':['a','b','c']})
  

который выглядит как

    id  col_1  col_2  col_3  col_4 dummy
0   1      1      1      2      2     a
1   2      1      1      2      2     b
2   3      1      1      2      2     c
  

Я хочу добавить итеративно два последовательных столбца и создать новый столбец и удалить исходные два столбца

Ожидаемый результат

    id  col_1 2  col_3 4 dummy
0   1        2        4     a
1   2        2        4     b
2   3        2        4     c
  

Я просто пытался

 for i in range (1,dd.shape[1]-2,2):
    dd['col_' str(i) ' ' str(i 1)] = dd.iloc[:,i:i 1].sum(axis = 1)
dd.drop(['col_1','col_2','col_3','col_4'],axis = 1, inplace = True)
  

что работает, но есть ли лучший способ использовать функциональность pandas?

Ответ №1:

Это слишком сложно, вы можете просто добавить две строки, используя оператор

 columns_to_add = [('col_1','col_2'), ('col_3','col_4')]
for cols in columns_to_add:
    col1, col2 = cols
    df[col1 '_plus_' col2] = df[col1]   df[col2]
    df.drop([col1, col2], axis=1, inplace=True)
  

Ответ №2:

Вы можете использовать это для любого количества столбцов, чтобы добавлять итеративно два последовательных столбца, создавать новый столбец и удалять исходные два.

 col_list = dd.columns
for i in range (1,len(col_list)-2):
  dd[str(col_list[i] '_' col_list[i 1])] = dd[col_list[i]]   dd[col_list[i 1]]
dd.drop(col_list[1:-1], axis=1, inplace=True)