Как я могу изменить порядок значений в столбце?

#python #pandas

Вопрос:

 df3=pd.DataFrame({'col1':['banana','apple','pie','mango','cola'],
                    'col2':['apple','banana','mango','cola','mango'],
                     })
df3['col3']=df3['col1'] df3['col2']
 

Результат

     col1    col2    col3
0   banana  apple   bananaapple
1   apple   banana  applebanana
2   pie     mango   piemango
3   mango   cola    mangocola
4   cola    mango   colamango
 

менять

 col1    col2    col3
0   banana  apple   bananaapple
1   apple   banana  bananaapple
2   pie     mango   piemango
3   mango   cola    mangocola
4   cola    mango   mangocola
 

что я хочу сделать, так это отфильтровать, если строка(ab=ba) изменится на ab

Комментарии:

1. пожалуйста, выражайтесь яснее. что вы имеете в виду под словом «аб ба»? вы имеете в виду, что если col1 = col2, измените col3?

2. Я имею в виду порядок столбцов, если они одинаковые col1 col2 = col2 col1, я хочу изменить col1 col2

3. Имеет ли значение порядок а и в? Если нет, вы можете получить col1 и col2 в виде списка из 2 элементов, отсортировать его, а затем создать строку.

Ответ №1:

IIUC, основываясь на вашем примере и ваших объяснениях, ваши ожидания сводятся к простой сортировке каждой строки и объединению их.

Предполагая , что у вас есть доступ к col1 и col2 , вы можете удалить добавление 2 столбцов по элементам и попробовать это —

 df3 = pd.DataFrame({'col1':['banana','apple','pie','mango','cola'],
                    'col2':['apple','banana','mango','cola','mango']})

#df3['col3']=df3['col1'] df3['col2'] ### REMOVE THIS

df3['col4'] = df3.apply(sorted, reverse=True, axis=1).str.join('')
print(df3)
 
      col1    col2         col4
0  banana   apple  bananaapple
1   apple  banana  bananaapple
2     pie   mango     piemango
3   mango    cola    mangocola
4    cola   mango    mangocola
 

РЕДАКТИРОВАТЬ: Обновлена векторизованная str функция для присоединения к списку строк, что значительно быстрее, чем .apply()

Комментарии:

1. спасибо, это то, чего я хотел

2. рад помочь в любое время.

3. Не стесняйтесь отмечать ответ, если он помог решить ваш вопрос.