#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)