Перебирать столбцы, находить выделение, создавать новый столбец - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь создать веб-сайт и создать ссылку на имя и ссылку на изображение. Но есть некоторые проблемы, когда я анализирую имя.

Мой фрейм данных выглядит так:

color    gender    model1    model2  extra_col1  extra_col2    extra_col3
black    male       A24      B2       
red      woman      A1       B3
19sf     black      male     A22        B1
deep     1909sf     2202     blue       woman         A1          B22   

Первые две строки верны. Я хочу перебрать все эти 7 столбцов, правильно найти цвет, пол и модель и создать новые столбцы;

В конце таблицы приведено то, что я хочу;

color    gender    model1    model2     
black    male       A24      B2                                           
red      woman      A1       B3
black    male       A22      B1
blue     woman      A1       B22

У меня есть списки уникальных значений цвета, пола, модели1, модели2 Мне нужно сравнить каждый элемент в указанных столбцах c, сопоставить со списками и написать правильный элемент в столбце цвета, столбце пола и т. д. c.

Спасибо.

1 Ответ

2 голосов
/ 28 февраля 2020

Ну, это определенно не чисто. У Python профи определенно были бы свои проблемы, но, поскольку я новичок в Python и Pandas, я просто дал ему шанс, используя некоторые Join, Regular Expressions и Split:

import pandas as pd
df = pd.DataFrame({'color':['black','red','19sf','deep'],
                   'gender':['male','woman','black','1909sf'],
                   'model1':['A24','A1','Male','2202'],
                   'model2':['B2','B3','A22','blue'],
                   'extra_col1':['','','B1','woman'],
                   'extra_col2':['','','','A1'],
                   'extra_col3':['','','','B22']})
df = df[df.columns[0:]].apply(lambda x: '|'.join(x.dropna().astype(str)), axis=1)
df = df.replace(r'.*?((?:\w+\|){3}\w+(?=\|*$)).*', value = r'\1', regex = True)
df = df.str.split('|', expand = True)
df.columns = ['color','gender','model1','model2']
print(df)

Итак, еще раз, хотя я очень новичок в программировании за пределами VBA, это делает работу, но, вероятно, может быть сделано намного аккуратнее. Скрестив пальцы, это работает для вас =)

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