У меня есть фрейм данных, который содержит коды продуктов и типы продуктов.
material_description component_type_or_status
SF 1243545gbe ff ee rr oo SF
LF 2324344ire ff ee rr oo LF
BF 3434333fre ff gg hh 23 BF
IA SF 3434333fre ff gg 22 re IA
ZZ LF 34391r33b ff tn 33 ZZ
Я хотел бы создать новый столбец под названием Код материала, который извлекает вторую или третью строку с левой стороны продукта. столбец кода в зависимости от значения типа продукта
Если SF , BF или LF , вернуть строку после первого пробела слева
Если IA или ZZ вернуть строку после второго пробела слева
Вот моя функция. Он застрял в oop, и я не уверен, что мой лог c правильный. Какой лучший способ сделать это с Pandas?
def parse_material_description(x):
df = infile.parse(sheet_name='Unit of Measure')
df['component_type_or_status'] = df['Material Description'].str[:2]
try:
if x['component_type_or_status'] == 'SF':
df['material_code'] = df['Material Description'].str.split(" ",1)
elif x['component_type_or_status'] == 'LF':
df['material_code'] = df['Material Description'].str.split(" ",1)
elif x['component_type_or_status'] == 'BF':
df['material_code'] = df['Material Description'].str.split(" ",1)
elif x['component_type_or_status'] == 'IA':
df['material_code'] = df['Material Description'].str.split(" ",2)
elif x['component_type_or_status'] == 'ZZ':
df['material_code'] = df['Material Description'].str.split(" ",2)
elif x['component_type_or_status'] == None:
return ''
except: IndexError
df['component_type_or_status'] = df.apply(parse_material_description, axis=1)