Соответствие строки Python Pandas из разных столбцов - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть excel-1 (необработанные данные) и excel-2 (справочный документ)

В excel-1 «комментарии» должны сопоставляться с колонкой «Комментарии» в excel-2. Если строкав столбце «комментарии» в excel-1 содержится любая из подстрок в столбце «комментарии» в excel-2, первичная и вторичная причины из excel-2 должны быть указаны в каждой строке в Excel-1.

Excel-1 {'Item': {0: 'rr-1', 1: 'ss-2'}, 'Order': {0: 1, 1: 2}, 'Comments': {0: 'Good; Stockне в порядке, # 1237-MF, закрытие склада », 1:« без изменений, плохо, доставка на следующей неделе, 09/12/2018-MF * '}}

Excel-2 {«Комментарии»: {0: «Хорошо», 1: «Запас не в порядке», 2: «Запас закрыт», 3: «Без изменений», 4: «Плохой запас», 5: «Доставка на следующую неделю»}, «Основная причина»': {0: «Качество», 1: «Склад», 2: «Логистика», 3: «Обратная связь», 4: «Склад», 5: «Логистика»}, «Вторичная причина»: {0: «Производство»', 1: «Склад», 2: «Склад», 3: «Обратная связь», 4: «Склад», 5: «Склад»}}

Пожалуйста, помогите построить логику.

Я получаюответ, когда есть одно совпадение с использованием функции pd.dataframe.str.contains / isin, но как написать логику для поиска нескольких совпадений и записи в определенном формате структуры.

desired output picture

for value in df['Comments']:
    string = re.sub(r'[?|$|.|!|,|;]',r'',value)
    for index,value in df1.iterrows():
        substring = df1.Comment[index]
        if substring in string:
            df['Primary Reason']= df1['Primary Reason'][index]
            df['Secondary Reason']=df1['Secondary Reason'][index]

1 Ответ

0 голосов
/ 20 сентября 2018

для значения в df ['Comments']:

string = re.sub(r'[?|$|.|!|,|;]',r'',value)

for index,value in df1.iterrows():

    substring = df1.Comment[index]

    if substring in string:

        df['Primary Reason']= df1['Primary Reason'][index]

        df['Secondary Reason']=df1['Secondary Reason'][index]

Анализ сверху кода:

  1. По сути, вы сравниваете строку 1 из excel-1 и строку-1 из excel-2 и сопоставление подстроки и строки и получение первичного и вторичного основания, верно?

  2. Здесь вы перезаписываете то же местоположение то есть местоположение o / pи по этой причине вы всегда получаете только 1 результат.

Проблема в следующем коде:

df['Primary Reason']= df1['Primary Reason'][index]

df['Secondary Reason']=df1['Secondary Reason'][index]

Придумайте логику, в которой вы можете суммировать результат в той же строке, что и в следующем формате:

res1, res2 .... и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...