#python #excel
Вопрос:
Я пытаюсь сопоставить строку в ячейке, и если она присутствует, я должен быть в состоянии записать определенную строку в новую ячейку/столбец. Например:
Это мой xlsx файл:
|UserPrincipalName |Contact |Age |Container |
|:-------------------------|:------:|:-----:|:--------------------------:|
|John.doe |Email |23 |LocationEMEAFranceUser |
|Jane.doe |Phone |25 |LocationEMEAGermanyUser|
|Jane12 |Phone |25 |LocationEMEAItalyUser |
|Jane1322 |Phone |25 |LocationEMEABelgiumUser|
|Feng.Main |SMS |21 |LocationAPACChinaUser |
|serviceaccount |Email | |LocationService Accounts |
Ожидаемый Результат:
|UserPrincipalName |Contact |Age |Container |Region |
|:-------------------------|:------:|:-----:|:-----------------:|:--------------|
|John.doe |Email |23 |LocationEMEAFranceUser |EMEA North |
|Jane.doe |Phone |25 |LocationEMEABelgiumUser|EMEA South |
|Jane12 |Phone |25 |LocationEMEAGermanyUser|EMEA South |
|Jane1322 |Phone |25 |LocationEMEAItalyUser |EMEA North |
|Feng.Main |SMS |21 |LocationAPACChinaUser |APAC |
|serviceaccount |Email | |LocationService Accounts |Service Account|
Мой Код:
df = pd.read_excel('C:\Users\Desktop\OpTest.xlsx')
df['Region'] = df[df['Container'].str.contains(r'\EMEA\')]
df = df.to_excel('C:\Users\Desktop\MFAOpTest.xlsx')
Мой Вывод:
введите описание изображения здесь
Ответ №1:
Я думаю, что самым простым способом было бы —
df = pd.read_excel('C:\Users\Desktop\OpTest.xlsx')
def myfunc(x):
if ('EMEAFrance' in x or 'EMEAItaly'in x):
return "EMEA North"
elif ('EMEABelgium' in x or 'EMEAGermany' in x):
return "EMEA South"
elif 'APACChina' in x:
return "APAC"
elif 'Service Accounts' in x:
return "Service Account"
df['Region'] = df['Container'].apply(myfunc)
print(df)
df.to_excel('C:\Users\Desktop\MFAOpTest.xlsx')
Это добавит столбец региона в фрейм данных, как и ожидалось.
Кроме того, вы можете настроить функцию в соответствии с вашими требованиями
Комментарии:
1. @IntelVenus — Если приведенный выше ответ решит вашу проблему, пожалуйста, примите Ответ, чтобы он считался решенным. Если ответ не решает проблему, пожалуйста, укажите проблему
2. Я попробовал это, и он ничего не записал в файл excel (с моей стороны была добавлена команда для записи выходных данных в excel). Я также попытался распечатать вывод, и он не вернул НИЧЕГО в столбце Регион, когда вывод был напечатан. Будет ли эта функция соответствовать всей строке или проверять наличие подстроки?
3. @IntelVenus — Я изменил ответ, пожалуйста, попробуйте еще раз. В коде для экспорта файла в EXCEL была синтаксическая ошибка, поэтому вывод отображался как «Нет». Пожалуйста, проверьте код последней строки в моем ответе выше. Эта функция проверит наличие подстроки (не всей строки)
4. Я уже пытался записать это в файл excel. Не сработало 🙁 Кроме того, он по-прежнему не печатает НИЧЕГО в регионе. Попробовал ваш последний код, он также дает тот же результат.
5. @IntelVenus — Хорошо, я думаю, что в этом вопросе есть некоторое недопонимание. Не могли бы вы, пожалуйста, поделиться точными шагами, которые вы выполняете ? (Так что я могу попробовать то же самое со своей стороны) Пожалуйста, укажите, какую IDE вы используете (ноутбук Ex — Jupyter, PyCharm и т. Д.) Кроме того, пожалуйста, поделитесь образцом файла EXCEL (используя ссылку на веб-сайт или ссылку на Google Диск)