#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. Не стесняйтесь отмечать ответ, если он помог решить ваш вопрос.