Фильтрация столбцов данных с использованием циклов в python и объединение на основе условия и запись столбцов в несколько исключений - PullRequest
0 голосов
/ 23 января 2020

df1 - это кадр данных, содержащий около 15 000 строк с 2 столбцами следующих данных в указанном формате c. Каждый номер продукта имеет соответствующее описание. Например, здесь показаны только 3 строки:

"Номер продукта (название столбца 1)"
A1B2C3D4 123

"Описание (название столбца 2) "
App 2p 34 serv

" Номер продукта (название 1-й колонки) "
X1Y2Z3D4 312

" Описание (col 2 name) "
Sams 2p 34 serv

" Номер продукта (название 1 имени) "
X1Y2Z3P4 312

" Описание (имя столбца 2) "
Nok 2p 34 ser


При этом у меня есть шаблон данных, имеющий несколько определенных c строк (10 в номер) в следующем формате. Опять 2 колонки. Здесь также каждый код имеет соответствующее описание. Например, здесь показаны только 3 строки:

"Код детали (имя столбца 1)"
A1B2C3D4

"Описание (имя столбца 2)"
F C

"Код детали (имя столбца 1)"
X1Y2Z3D4

"Описание (имя столбца 2)"
N C

"Код детали (имя столбца 1)"
X1Y2Z3P4

"Описание (имя столбца 2) "
P C


С этим у меня мало ключевых слов : App, Sams и Nok.


Используя pandas, я пытаюсь применить следующие фильтры в df1:
кодов из шаблона (столбец 1) в столбце 1 df1 и использование ключевых слов в столбце 2 df1 по одному. Отфильтрованные, я добавляю описание col 2 в шаблоне с col2 описания в df1

Для каждого ключевого слова я фильтрую все коды ввода. В В результате, я хотел бы иметь только 2 столбца, которые должны содержать парт-кодов col 1 (которые отфильтрованы) и добавленное описание в col2 в различных экземплярах согласно описание col2 шаблонного фрейма данных

Я написал следующий код для одиночной логики c и его генерацию в Excel. Тем не менее, я не могу масштабировать его для нескольких парт-кодов и ключевых слов. Пожалуйста, поддержите, чтобы ответить.

for i in template.index: 
    if(template['Partcode'][i].__contains__('A1B2C3D4')):
        to_be_concatenated = template['Description'][i]

list1 = []
list2 = []

for i in df1.index:
    if(df1['Product Number'][i].__contains__('A1B2C3D4') & df1['Description'][i].__contains__("App")):
        list1.append(to_be_concatenated + "" + df1['Description'][i])
        list2.append(df1['Product Number'][i])

final1 = list(zip(list2,list1))

output1 = pd.DataFrame(final1, columns = ['Product Number','Description']) 

writer = pd.ExcelWriter('C:\\Desktop\\App.xlsx', engine='xlsxwriter')

output1.to_excel(writer, sheet_name='FC', index = False)
writer.save()
...