как найти в документе Excel конкретное слово, а также создать новый столбец с результатами поиска - PullRequest
1 голос
/ 05 июля 2019

Так что я новичок в python, и я пытаюсь найти в листе Excel, используя python для «ICD» в каждой строке, и создать новый столбец с результатами, чтобы, если строка содержала слово «ICD», то в В новом столбце появится слово «да», если его нет, появится слово «нет».

Пока я пробовал много разных способов, но я застрял, потому что я новичок в этом. Вот что у меня так далеко. Мне потребовалось некоторое время, чтобы даже найти способ импортировать сам документ Excel, теперь мне нужно найти способ добавить новый столбец, выполнить поиск в каждой строке и поместить результат. я знаю, что мне нужен цикл, и я знаю, что мне нужно выражение if / else, но я не знаю, куда их поместить или что в них вставить. я использую python 3.7

import pandas as pd
import xlrd
df = pd.read_excel (r'C:\New folder\CrohnsD.xlsx')
print (df)
import xlsxwriter
ICD=[
    str = df
    str.find("ICD",[ 0,[ 1057]])\
    if row contains "ICD"


]`

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

Вы можете положиться на основные функции струн панд - не нужно ничего особенного. Ищете, содержит ли столбец текста определенную текстовую строку? Используйте Series.str.contains:

df = pd.DataFrame({'x':['abc','defgICD','hijicd','klm']})
df['icd'] = df['x'].str.contains('icd', case=False)

возвращается:

         x    icd
0      abc  False
1  defgICD   True
2   hijicd   True
3      klm  False

См. Страницу справки для str.contains, где приведена документация по опциям, которые вы можете использовать. В частности, вы можете указать, соответствуете ли вы на основе регистра (в этом случае шаблон, который вам подходит, должен быть точным) или соответствует icd, ICD, iCd и т. Д.

Мнение : По мере того, как вы приобретаете больше опыта в программировании и даже в Excel, я бы рекомендовал придерживаться булевых значений True / False вместо кодирования «Да» / «Нет», поскольку это просто более просто , легче запомнить и т. д. Если вам нужно что-то представить менеджеру / клиенту / и т. д., вы можете заменить True / False на что-то другое в качестве последнего шага.

0 голосов
/ 05 июля 2019

Pandas имеет встроенную поддержку чтения Excel, поэтому вам не нужны xlrd или xlsxwriter, если у вас нет сложных требований к форматированию вывода. Если вы просто читаете, добавляете столбец и пишете, вы можете использовать панд для всего этого.

Вы можете использовать лямбда-функцию для проверки всех строк одновременно. Это может показаться немного сложным, но .apply(lambda) на axis=1 будет выполнять любую логику, которую вы назначаете каждой строке вашего фрейма данных. затем мы можем использовать .str .contains() and .any() для проверки каждого на наличие 'a'

data = [['a','b','c'],['a','d','e'],['x','y','z']]
df = pd.DataFrame(data)

# Create a new column that contains True or False depending on if any of the values in that row contain the string 'a'
df['has_letter_a'] = df.apply(lambda row: True if row.str.contains('a').any() else False, axis=1)

выход

>>> df
   0  1  2  has_letter_a
0  a  b  c          True
1  a  d  e          True
2  x  y  z         False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...