Это супер уродливо, и однажды, надеюсь, раньше, чем позже, я смогу выполнить эту задачу элегантным способом, хотя до тех пор это то, что дало мне тот результат, который мне нужен.
разбить train_df ['attribute_ids'] на свои собственные ячейку / столбец
helper_df = train_df['attribute_ids'].str.split(expand=True)
объединить train_df с helper_df, чтобы у меня был столбец id (это идентификаторы фотографий))
train_df2 = pd.concat([train_df, helper_df], axis=1)
удалить исходный столбец attribute_ids
train_df2.drop(columns = 'attribute_ids', inplace=True)
переименовать новые столбцы
train_df2.rename(columns = {0:'attr1', 1:'attr2', 2:'attr3', 3:'attr4', 4:'attr5', 5:'attr6',
6:'attr7', 7:'attr8', 8:'attr9', 9:'attr10', 10:'attr11'})
преобразоватьlabel_df в словарь
def create_file_mapping(df):
mapping = dict()
for i in range(len(df)):
name, tags = df['attribute_id_num'][i], df['attribute_name'][i]
mapping[str(name)] = tags
return mapping
сопоставить и заменить номера тегов соответствующими именами тегов
train_df3 = train_df2.applymap(lambda s: my_map.get(s) if s in my_map else s)
создать новый столбец тегов наблюдений всписок объединенных значений
helper1['new_col'] = helper1[helper1.columns[0:10]].apply(lambda x: ','.join(x.astype(str)), axis = 1)