Ну, это определенно не чисто. У 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
, это делает работу, но, вероятно, может быть сделано намного аккуратнее. Скрестив пальцы, это работает для вас =)